System and method for real-time spectrum analysis in a radio device

ABSTRACT

A real-time spectrum analysis engine (SAGE) that comprises a spectrum analyzer component, a signal detector component, a universal signal synchronizer component and a snapshot buffer component. The spectrum analyzer component generates data representing a real-time spectrogram of a bandwidth of radio frequency (RF) spectrum. The signal detector detects signal pulses in the frequency band and outputs pulse event information entries output, which include the start time, duration, power, center frequency and bandwidth of each detected pulse. The signal detector also provides pulse trigger outputs which may be used to enable/disable the collection of information by the spectrum analyzer and the snapshot buffer components. The snapshot buffer collects a set of raw digital signal samples useful for signal classification and other purposes. The universal signal synchronizer synchronizes to periodic signal sources, useful for instituting schemes to avoid interference with those signals.

[0001] This application claims priority to the following U.S.Provisional Patent Applications, all of which are incorporated herein byreference:

[0002] U.S. application Ser. No. 60/374,365, filed Apr. 22, 2002.

[0003] U.S. application Ser. No. 60/380,890, filed May 16, 2002.

[0004] U.S. application Ser. No. 60/319,435, filed Jul. 30, 2002.

[0005] U.S. application Ser. No. 60/319,542, filed Sep. 11, 2002.

[0006] U.S. application Ser. No. 60/319,714, filed Nov. 20, 2002.

[0007] U.S. application Ser. No. 60/453,385, filed Mar. 10, 2003.

[0008] U.S. application Ser. No. 60/320,008, filed Mar. 14, 2003.

[0009] This application is a continuation-in-part of U.S. applicationSer. No. 10/246,365 filed Sep. 18, 2002, the entirety of which isincorporated herein by reference.

BACKGROUND OF THE INVENTION

[0010] The present invention is directed to technology used in a radiocommunication device to derive information about the signals active in aradio frequency band where the radio communication device is operating,such as an unlicensed radio frequency band shared by many differentdevices.

[0011] In certain radio communication systems, it would be desirable toknow whether and what types of other signals or devices are active. Forexample, an unlicensed radio frequency band is, by its nature, free tobe used by any device that emits radio energy within certain powerlevels in that part of the allocated spectrum. It is possible that manydevices would share the unlicensed frequency band at the same time,potentially causing interference with each other. Under thesecircumstances, what would be useful is to provide the capability ofprocessing signals that represent activity in the frequency spectrumover a time interval to derive information about the basiccharacteristics of those signals in order to identify or classify them.

SUMMARY OF THE INVENTION

[0012] A real-time spectrum analysis engine (SAGE) is provided thatgenerates information about the signal activity in a frequency band. TheSAGE has several components to produce generalized spectrum informationas well as specific information concerning the type of signal pulses inthe frequency band at any given time.

[0013] The SAGE is, for example, a hardware accelerator that resides ina communication device and comprises a spectrum analyzer component, asignal detector component, a universal signal synchronizer component anda snapshot buffer component. The spectrum analyzer component generatesdata representing a real-time spectrogram of a bandwidth of radiofrequency (RF) spectrum. The signal detector detects signal pulses inthe frequency band and outputs pulse event information entries whichinclude the start time, duration, power, center frequency and bandwidthof each detected pulse. The signal detector also provides pulse triggeroutputs which may be used to enable/disable the collection ofinformation by the spectrum analyzer and the snapshot buffer components.The snapshot buffer collects a set of raw digital signal samples usefulfor signal classification and other purposes. The universal signalsynchronizer synchronizes to periodic signal sources, useful forinstituting schemes to avoid interference with those signals. Some orall of the functions of the SAGE may be implemented entirely in softwareexecuted by a processor.

[0014] The above and other objects and advantages will become readilyapparent when reference is made to the following description taken inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0015]FIG. 1 is a block diagram showing the spectrum analysis engine(SAGE).

[0016]FIG. 2 is a block diagram of a radio transceiver interface thatinterfaces the SAGE to a radio transceiver or radio receiver.

[0017]FIG. 3 is a more detailed block diagram of the SAGE.

[0018]FIG. 4 is schematic diagram of the spectrum analyzer component ofthe spectrum analysis engine.

[0019]FIG. 5 is a graphical diagram showing a representation of the FFTdata generated by the spectrum analyzer.

[0020]FIG. 6 is a more detailed block diagram of the peak detector andpulse detector components of the spectrum analysis engine.

[0021]FIG. 7 is a graphical plot showing a signal peak that is detectedby the peak detector.

[0022]FIG. 8 is a schematic diagram of the components of the pulsedetector.

[0023]FIG. 9 is a graphical plot showing exemplary signal pulses andpulse event information generated by the signal detector for theexemplary signal pulses.

[0024]FIG. 10 is a schematic diagram of the stats module of the spectrumanalyzer component of the SAGE.

[0025]FIG. 11 is a diagram showing exemplary stats that are accumulatedby the stats logic module.

[0026]FIG. 12 is a diagram showing the exemplary peak stats that areaccumulated by the stats logic module.

[0027]FIG. 13 is a block diagram showing the dual port RAM (DPR) storageused to store data generated by the spectrum analysis engine, and fromwhich a microprocessor control unit (MCU) may obtain output of the SAGE.

[0028]FIG. 14 is a diagram showing the addressing scheme for data storedin the DPR.

[0029]FIG. 15 is a diagram showing the circular list structure of thedata stored in the DPR.

[0030]FIG. 16 is a diagram showing the position list format of thecircular list for data stored in the DPR.

[0031]FIG. 17 is a block diagram of a universal clock module componentof the universal signal synchronizer.

[0032]FIG. 18 is a timing diagram showing how a universal clock moduleis used to synchronize to an exemplary pulse detected in the frequencyband.

[0033]FIG. 19 is a block diagram of a clock update process to update thefrequency offset between the clock of a detected signal and a localclock.

[0034]FIG. 20 is a diagram showing how the SAGE may be operated.

[0035]FIG. 21 is a block diagram showing another environment in whichthe SAGE may be deployed.

[0036]FIG. 22 is a diagram showing an application of the SAGE in anunlicensed frequency band wireless environment.

[0037]FIG. 23 is a block diagram showing use of the SAGE in a spectrummanagement system that manages activity in a frequency band.

[0038]FIGS. 24 through 27 are graphical diagram showing how SAGE outputmay be displayed.

[0039]FIG. 28 is a ladder diagram illustrating how messages aregenerated to access SAGE data through a network spectrum interface(NSI).

DETAILED DESCRIPTION OF THE DRAWINGS

[0040] The spectrum analysis engine, hereinafter referred to as “SAGE”is a hardware accelerator useful to generate in real-time informationabout the activity in a frequency band. FIG. 1 is a block diagramshowing the SAGE 10 together with other hardware components that SAGEinteracts with during operation. The SAGE 10 and related components maybe implemented in a variety of ways. One way is with digital logic gateson a single or multiple semiconductor chips configured to perform thefunctions described herein. Another way is in one or more semiconductordevices using a CMOS process. For example, the majority of the SAGE 10can be implemented as part of or the entirety of an application specificintegrated circuit (ASIC) by digital logic gates. It is also envisionedthat for certain applications, some or all of the functions of the SAGE10 are implemented with software instructions stored on a processorreadable medium, and executed by a processor, such as the MCU, oranother processor in another device coupled to receive as input theoutput an ADC that converts the downconverted signals to a digitalsignal. An example of one software implementation of the SAGE 10 isdescribed hereinafter in connection with FIG. 21.

[0041] The SAGE 10 comprises a spectrum analyzer (SA) 100, a signaldetector (SD) 200, a snapshot buffer (SB) 300 and a universal signalsynchronizer (USS) 400. The SA 100 generates data representing areal-time spectrogram of a bandwidth of radio frequency (RF) spectrum,such as, for example, up to 100 MHz. As such, the SA 100 may be used tomonitor all activity in a frequency band, for example, the 2.4-2.483 GHzISM band, or the 5.15-5.35 GHz and 5.725-5.825 GHz UNII bands. Power vs.frequency information generated by SAGE 10 is stored in a dual-port RAM(DPR) 500 and is also used by the signal detector 200.

[0042] The signal detector 200 detects signal pulses in the frequencyband and outputs pulse event information entries, which include one ormore of the start time, duration, power, center frequency and bandwidthof each detected pulse. The signal detector 200 also provides pulsetrigger outputs which may be used to enable/disable the collection ofinformation by the spectrum analyzer 100 and the snapshot buffer 300components.

[0043] The snapshot buffer 300 collects a set of raw digital signalsamples useful for signal classification and other purposes, such astime of arrival location measurements. The snapshot buffer 300 can betriggered to begin sample collection from either the signal detector 200or from an external trigger-source using the snapshot trigger signalSB_TRIG.

[0044] The universal signal synchronizer 400 synchronizes to periodicsignal sources, such as Bluetooth SCO headsets and cordless phones. TheUSS 400 interfaces with medium access control (MAC) logic 750 thatmanages scheduling of packet transmissions in the frequency bandaccording to a MAC protocol, such as, for example, the IEEE 802.11protocols. The MAC logic 750 may be implemented in DSP firmware, or inhigher level software.

[0045] The SAGE 10 is useful in a radio communication device where aradio transceiver 600 (or a radio receiver) is used to process receivedRF signals and convert them to baseband signals. A microprocessorcontrol unit (MCU) 700 interfaces with the SAGE 10 to receive spectruminformation output by SAGE 10, and to control certain operationalparameters of SAGE 10 for particular functions described in detailhereinafter. The MCU 700 may be any suitable microprocessor that resideseither on the same semiconductor chip as the SAGE 10, or on anotherchip. The MCU interfaces with SAGE 10 through the DPR 500 and thecontrol registers 560. The SAGE 10 interfaces with the MCU 700 through amemory interface (I/F) 550 that is coupled to the DPR 500.

[0046] The control registers 560 include registers to enable the MCU 700to configure control and monitor the SAGE 10. There is a control/statusregister, an interrupt enable register, an interrupt flags register,spectrum analyzer control registers, signal detector control registers,snapshot buffer control registers and USS control registers. Thecontrol/status register includes a field to perform a reset of the SAGEcomponents. The interrupt enable register is used to indicate one ormore pending interrupt conditions to the MCU 700. The MCU 700 also usesthe interrupt flags register to clear any processed interrupts.

[0047] Two clock signals are used to drive the SAGE 10. The main clocksignal, CLK, runs at the sampling rate of the ADC 810 and controls mostof the SAGE logic. The other clock, BUSCLK, is used to control the MCUside of DPR 500, interface to the control registers 560, the globaltimer interfaces (GFIs), and the lower medium access control (LMAC)interfaces. The DPR 500 is driven using a separate clock on each port:CLK on the SAGE side and BUSCLK on the MCU side. The control registers560 may be double-buffered to avoid synchronization problems betweenSAGE and MCU control logic.

[0048] The SAGE 10 operates on digital signals derived from the basebandsignals output by the radio transceiver 600. An RF interface 800 isprovided that pre-processes the baseband signals for processing by theSAGE 10.

[0049] Turning to FIG. 2, the RF interface 800 will be described. The RFinterface 800 comprises an analog-to-digital converter (ADC) block 810,an automatic gain control (AGC) block 820, a direct current (DC)correction block 830 and an amplitude/phase correction block 840.

[0050] The radio transceiver 600 that generates the received (Rx)baseband signals may have an RF receiver in which the local oscillator(LO) for the quadrature downconverter is placed at the center of theband of interest. As such, DC, amplitude and phase offset compensationcircuits are provided before the Fast Fourier Transform (FFT) tomaximize LO and sideband suppression.

[0051] The Rx baseband signals are sampled at the CLK frequency usingtwo ADCs, one for the in-phase signal (I), and another for thequadrature signal (Q). Only one ADC is shown in FIG. 2 for simplicity.An example of a CLK and ADC frequency is 120 MHz, which is sufficient todigitize the entire 2.4 GHz ISM band. Consequently, the maximum FFT rateis 468.8 kHz (2.13 microseconds per FFT) at CLK=120 MHz, though fasteror slower rates may be suitable for other applications.

[0052] The AGC block 820 dynamically adjusts the gain of the receiver tooptimize the placement of the Rx signal within the dynamic range of theADC 810. A slow, feedback-driven algorithm is useful, in which the Rxgain is adjusted to place the maximum signal level received in the lastT seconds (nominally T=1 second) 6 dB below full-scale on the ADC 810.The use of a “slow” AGC algorithm is beneficial because it prevents theADC 810 from saturating when sampling the entire frequency band ofinterest (wideband mode) whenever strong signals appear suddenly in theband, without requiring rapid adjustments in gain which can causedistortion and discontinuities in Rx signal pulses. The output of theAGC 820 is an AGCcomp signal, the use of which is described hereinafter.

[0053] The DC correction and amplitude/phase correction blocks 830 and840, respectively, compensate for LO leakage and amplitude/phaseimbalance in the quadrature mixer of the radio transceiver. DCcorrection is performed adaptively by estimating the DC offset at theADC output and updating a correction DAC to remove large DC offsets. Anyresidual DC offset after course correction is removed after the ADC viadigital subtraction. The MCU estimates the amplitude and phase imbalanceand programs the correction values into the appropriate controlregisters.

[0054] The output of the RF interface 800 comprises a digital signalDataI representing the in-phase received signal and a digital signalDataQ representing the quadrature phase received signal. The signalsDataI′ and DataQ′ represent the output of the summer 835, uncorrectedfor DC and amplitude/phase, and can be supplied as the raw data to thesnapshot buffer 300.

[0055] The SAGE 10 can be used in a radio communication device thatincludes a RF receiver capable of operating in a wideband mode ornarrowband mode. In a wideband mode, the RF receiver may downconvert anentire or a substantial portion of a frequency band in which the radiocommunication device operates. In the wideband mode, the RF interface800 supplies digital signals representing activity in the entirefrequency band for successive time intervals as input to the SAGE 10. Ina narrowband mode, the RF receiver may downconvert only a single RFchannel or portion of the frequency band, in which case, the RFinterface 800 would supply digital signals representing activity in thatsingle RF channel or portion of the frequency band. The RF receiver maybe tuned to different portions of the frequency band so as to scanacross the frequency band. An example of a radio receiver having awideband mode as part of a radio transceiver is disclosed in commonlyassigned U.S. Provisional Application No. 60/319,434 filed Jul. 30,2002, the entirety of which is incorporated herein by reference.

[0056] The Spectrum Analyzer

[0057] With reference to FIGS. 3 and 4, the spectrum analyzer 100performs real-time FFT-based spectrum analysis on the DataI and DataQsignals. As an example, the SA 100 is capable of providing real-timespectrum analysis information of a frequency band (whether from widebandradio receiver or a scanning narrowband receiver), and as such can beused to monitor all activity in either the 2.4 GHz or 5.7 GHz unlicensedbands, for example. Other applications for monitoring smaller or greaterbandwidths are also possible using similar techniques.

[0058] The data path leading to the SA 100 comprises a windowing block110, a Fast Fourier Transform (FFT) block 120 and a spectrum correctionblock 125. These components are external to the SA 100 because they canbe shared with other components in a system. The SA 100 itself comprisesa power calculation block 130, a lowpass filter block 140, alinear-to-log converter (dB conversion) block 150, a history buffer 160,stats logic 170 and a SA memory controller 190.

[0059] As shown in FIG. 4, the windowing block 110 performs pre-FFTwindowing on the I and Q data using either a Hanning or rectangularwindow with a multiplier 112 and a ROM 114 that stores slopecoefficients for the windowing process.

[0060] The FFT block 120 is, for example, a 256 frequency bin FFT blockthat provides (I and Q) FFT data for each of 256 frequency bins thatspan the bandwidth of frequency band of interest. An example of the FFTdata field is shown in FIG. 5. For each FFT sampling time interval, theFFT block outputs M (such as 10) bits of data for each FFT frequencybin, for example, 256 bins. Thus, it can be seen that two-dimensionaldata structure can be defined for the FFT data fields across timeintervals. This diagram is a useful paradigm to understand the furtheroperations that are performed on the FFT data.

[0061] The output of the FFT block 120 is coupled to the spectrumcorrection block 125. The spectrum correction block 125 corrects for Iand Q channel imbalance by estimating an I-Q channel imbalance parameterrelated to phase error and amplitude offset between the I and Qchannels. To suppress a side tone resulting from the RF downconversionprocess, the following relationship is used:

S(k)=w(k)*[Y(k)+v(k)*Y(−k)], k=0 . . . 255

[0062] where w(k) and v(k) are not greatly dependent on frequencydependent, so that we can use one of w(k), v(k) vectors for sixteenk-indexes. In the wideband mode, it is the one spectrum correctioncoefficient for 6.25 MHz bandwidth. To find the optimized w and vvectors, the spectrum correction block 125 collects at least 8 samplesfrom the output of the FFT 120 and optimizes the vectors using thefollowing recursive algorithm. Q(k, i), E(k, i) is a real number C(k,i), v(k, i), w(k, i) is a complex number v(k, 0) = 0, E(k, 0) = 0 for i= 1 : N $\begin{matrix}{{Q\left( {k,i} \right)} = {{{Y_{f}\left( {k,i} \right)}}^{2} + {{Y_{r}\left( {k,i} \right)}}^{2}}} \\{{C\left( {k,i} \right)} = {{Y_{f}\left( {k,i} \right)}*{Y_{r}\left( {k,i} \right)}}} \\{{E\left( {k,i} \right)} = {{\left( \frac{M - 1}{M} \right)*{E\left( {k,{i - 1}} \right)}} + {\left( \frac{1}{M} \right)*{Q\left( {k,i} \right)}}}} \\{{v\left( {k,i} \right)} = {{v\left( {k,{i - 1}} \right)} - \frac{{{v\left( {k,{i - 1}} \right)}*{Q\left( {k,i} \right)}} + {C\left( {k,i} \right)}}{M*{E\left( {k,i} \right)}}}} \\{{w\left( {k,i} \right)} = \frac{1 - {v^{*}\left( {k,i} \right)}}{1 - {{v\left( {k,i} \right)}}^{2}}}\end{matrix}\quad$

end return(w(k, N)) return(v(k, N))

[0063] Other suitable spectral correction algorithms may be employed.Further details concerning one correction algorithm are disclosed in thepublication “A Spectral Correction Algorithm for I-Q Channel ImbalanceProblem,” Tien-Yow Liu, Stuart Golden and Naiel Askar, IEEE, 2001,publication.

[0064] The power calculation block 130 comprises two multipliers 132 and134 and an adder 136. The multipliers 132 and 134 compute (FFTdataI)²and (FFTdataQ)², respectively, and the adder 136 adds them together, tooutput a power value.

[0065] The lowpass filter block 140 comprises a multiplier 142,multiplier 144, an adder 145, a flip-flop 146 and a history RAM 148. Thelowpass filter block 140 performs a unity-gain, single-pole lowpassfiltering operation on the power values of the signal at each FFTfrequency bin. Using P_(fft)(k) to denote the power value at FFTfrequency f(k), the lowpass filter output P_(lpf) (k) is updated onceper FFT interval (t) as follows: P_(lpf)(k, t):=α₁P(k,t)+(1α₁)P_(lpf)(k, t−1), 1=k=256, where α1 and (1−α1) are parameters forthe multipliers 142 and 144, respectively specifying the LPF bandwidthwhich is configured by the MCU 700. The history RAM 148 stores the FFTpower data for the previous FFT interval that is used with multiplier144 according to the mathematical relationship described above.

[0066] The dB conversion block 150 at the output of the lowpass filterblock 140 computes the decibel value PDB(k)=10*log(|P_(lpf)(k, t)|) foreach FFT bin value P_(lpf)(k, t) (in dBFS, i.e., dB from full-scale onthe ADC). The ROM 152 stores a table used for the dB conversioncomputation and the adder 152 subtracts the gain compensation AGCcompoutput by the AGC 820, calibrated by RSSIO. RSSIO is input signal power,RX(dBm), when dBFS equals 0 dB with setting GC as 0 dB. The output ofthe dB conversion block 150 is a PDB(k) data field (k=number offrequency bins) containing dB power data at each frequency bin and aPDBSTART signal that indicates the start of the following PDB(k) field.

[0067] The stats logic block 170 will be described hereinafter inconjunction with FIG. 10.

[0068] The spectrum analyzer 100 has two operating modes for writingdata into the DPR 500. In a continuous mode, one power vs. frequencyvalue is written to the DPR 500 every N FFT cycles (N=decimationfactor). In a transitional mode, a power vs. frequency value is writtenwhenever a pulse event is detected by the signal detector 200, inresponse to a spectrum analyzer trigger event signal SD_SAEVT, describedhereinafter. The transitional mode generally improves DPR storageefficiency over the continuous mode since in the former case power vs.frequency information is written to the DPR only after pulsetransitions.

[0069] Examples of control registers for the spectrum analyzer include acontrol field, a register for the lowpass filter parameter a, registersfor the DPR address of the DPR buffers that store the spectrum analyzerstats, a register that counts the number of times the stats have beenupdated, a register that stores a value that determines the number ofFFT intervals for a statistic update cycle, a register that stores thepower threshold value for the duty cycle stats (described hereinafter),and a register for the structure for the power vs. frequency circularlist.

[0070] The spectrum analyzer control register includes fields to, amongother things, indicate received signal strength indicator (RSSI) mode,absolute or relative. The relative mode means that power measurementsare in units of dB full scale; absolute mode means the measurements arein units of dBm. In addition, there is a field to indicate theoperational mode of the spectrum analyzer, continuous mode ortransitional mode.

[0071] The Signal Detector

[0072] With reference to FIG. 3 in conjunction with FIG. 6, the signaldetector 200 identifies signal pulses in the Rx data path, filters thesesignals based on their spectral and temporal properties, and passescharacteristic information about certain detected pulses to the MCU 700via the DPR 500. The signal detector 200 also provides pulse timinginformation to the universal signal synchronizer 400 to allow it tosynchronize its clocks to transmissions to/from other devices operatingin the frequency band, for example, to eliminate interference withQoS-sensitive devices such as cordless phones, Bluetooth™ headsets,video-over-802. 11 devices, etc.

[0073] As shown in FIG. 3, the signal detector 200 comprises a peakdetector 210 and a one or more pulse detectors 220. For example, thereare four (4) pulse detectors 220. The peak detector 210 looks forspectral peaks in the FFT sequence at its input, and reports thebandwidth, center frequency and power for each detected peak. The outputof the peak detector is one or more peaks and related information. Thepulse detectors 220 detect and characterize signal pulses based on inputfrom the peak detector 210.

[0074] The peak detector 210 detects a peak as a set of FFT points incontiguous FFT frequency bins, each above a configured minimum powerlevel. Once per FFT interval, the peak detector 210 outputs datadescribing those frequency bins that had a FFT value above a peakthreshold and which frequency bin of a contiguous set of frequency binshas a maximum value for that set. In addition, the peak detector 210passes the PDB(k) data field for each FFT interval. This can berepresented by the pseudo code (where k is the frequency bin index):PDB_(diff)(k)= PDB(k) − SD_PEAKTH; If(PDB_(diff)(k) = 0) PDB_(peak)(k)=PDB(k); PEAKEN(k)= 1; Else PDB_(peak)(k)= 0; PEAKEN(k)= 0; end

[0075] The peak detector 210, as shown in FIG. 6, comprises a comparator212, a register file 214, a FIFO 216 and a FIFO 218. The comparator 212compares the dB power value PDB(k) with the peak threshold (SD_PEAKTH).The FIFO 216 stores a data word that indicates which frequency bins khad a power value above the peak threshold, and which did not. Forexample, if the FFT outputs 256 FFT values, the FIFO 216 stores a 256bit word, with 1's indicating FFT values that exceed the peak thresholdand 0's indicating FFT values that do not exceed the peak threshold. Theregister file 214 stores the maximum peak power value in any set ofcontiguous FFT values that exceed the peak threshold. This maxpeakinformation is used in the pulse detector. The FIFO 218 stores thePDB(k) data field corresponding to the data stored in the register file214 and FIFO 216.

[0076]FIG. 7 shows an example where a peak is detected at the frequencybin 130 by a contiguous set of points above a peak threshold shown inthe dotted line. In this example, NFFT=256, fs=120 MHz, configured minpower level=−80 dBm (not shown), k0=129, k1=127, kh=131, P(k0)=−50 dBm,BW_THRESH=15 dB, bandwidth=1.875 MHz, center frequency=0.4688 MHz. Theselatter parameters will be described hereinafter in conjunction with thepulse detector 220. The variable fs is the sampling rate of the ADC(FIG. 2), which will depend on the width of the frequency band to beprocessed. Narrowband and wideband operation of the radio transceiver isdescribed above.

[0077] The signal detector 200 has one or more pulse detectors 220 (suchas 4), allowing several pulses to be detected and characterizedsimultaneously. Generally, a pulse detector calculates relativethresholds based on configured information, and checks whether pdBexceeds the relative threshold. If pdB exceed the relative threshold, itdefines the peak as a pulse candidate. Once a pulse candidate is found,the pulse detector compares the identified pulse candidate with a pulsedefinition such as power, center frequency, and bandwidth (defined bythe pulse detector configuration information). After matching pulsecandidate with a defined pulse, it checks the defined pulse duration. Ifit is the first time to detect (which means pulse duration counter iszero), it registers current pulse candidate information as a DETECTEDPULSE. If duration counter is not zero, it increases pulse durationcount. After increasing pulse duration count, if it is greater than aminimum required pulse duration, it triggers start of pulse. If it isgreater than a maximum allowed pulse duration, it triggers terminationof pulse. When the pulse detector does not detect a pulse at a giventime slot, and there is a non-zero value of the pulse duration counter,then it triggers termination of pulse as well.

[0078] As shown in FIG. 6, each pulse detector 220 comprises a pulseidentifier block 230, a pulse finder block 250, a pulse tracking block270 and a detect buffer 290. These components, described further inconjunction with FIG. 8, are operated with configurable parameters toexecute a set of rules:

[0079] Pulse Shaping Rules: How should pulse information be extractedfrom raw peak information—performed by the pulse identifier 230.

[0080] Pulse Detection Rules: Under what conditions is the start of apulse detected—performed by the pulse finder 250.

[0081] Pulse Termination Rules: Under what conditions should anindividual pulse be considered complete—performed by the pulse tracker270.

[0082] Pulse Shaping Rules.

[0083] For a detected FFT peak at frequency index k0, the bandwidth ofthe peak is defined as the length of the largest interval over which theFFT power level is at least a certain value below the peak FFT powerlevel. Specifically, the bandwidth is FP_(BW)=Bandwidth(Hz)=(kh−k1+1)*fs/NFFT, where k1 and kh are the smallest and largestintegers, respectively, satisfying (1) k1=k0=kh, and (2)P(k)=P(k0)−BW_THRESH for any k1=k=kh, where fs is the ADC sampling ratein Hz, NFFT is the number of points/bins in the FFT, and P(k) denotesthe power (in milliwatts) at FFT frequency bin k.

[0084] Similarly, the center frequency of the peak is FP_(CENTER)=CenterFrequency (Hz)=[(kh+k1)/2]*fs/NFFT. This definition of center frequencylocates the signal in the Nyquist band only. The actual center frequencyat RF is given by RF Center Frequency (Hz)=FPCenter−fs/2+fLO, where fLOis the RF LO frequency used to convert the FFT band to baseband, and azero-IF receiver architecture is assumed (i.e., the LO is in the centerof the RF band).

[0085] The peak detector 210 uses the following formula to estimate thepower of a peak: Power (dBm)=? PDB_(peak)(k), from k=k1 to kh. This isonly an estimate and its accuracy depends on the signal itself and thevalue of BW_THRESH. The pulse identifier 230 shown in FIG. 8 comprisescomponents to perform the pulse shaping rules using the bandwidththreshold (BW_THRESH) parameter to identify those pulses that have abandwidth that is greater than or exceeds the bandwidth threshold.

[0086] Pulse Detection Rules.

[0087] The pulse detection rules specify the conditions under which thestart of a pulse is to be detected and these rules are performed by thepulse finder 250. For example, a pulse is considered DETECTED if thereis a peak from the pulse shaping rules that satisfies ALL of thefollowing conditions:

[0088] 1) Estimated power is between the peak detector minimum power andthe peak detector maximum power. The pulse power level DETECT_POWERwhich triggered the detection of this specific pulse is used by thepulse termination rules.

[0089] 2) Center frequency of the peak is between a center frequencyminimum and a center frequency maximum. The detected center frequencyDETECT_CFREQ is used in pulse termination rules.

[0090] 3) Bandwidth of the peak is within a bandwidth minimum and abandwidth maximum.

[0091] Pulse Termination Rules.

[0092] A pulse may be considered TERMINATED if, for example, the pulseduration exceeds a duration maximum, or NONE of the detected peaks fromthe peak detector satisfies ALL of the following conditions:

[0093] 1) Estimated power of the peak is within +/− a power hold valueof the power of the pulse when it was originally detected.

[0094] 2) Center frequency of the peak is within +/− a frequency holdvalue of the center frequency of the peak when it was originallydetected.

[0095] 3) Bandwidth of the peak is within a bandwidth hold value of thebandwidth of the peak when it was originally detected.

[0096] The pulse tracker 270 comprises components to detect thetermination of a pulse according to these rules.

[0097] When a pulse terminates, the pulse tracker 270 writes a pulseevent entry into the pulse event list if the pulse duration exceeds apulse duration threshold value. Otherwise, the pulse event entry isdiscarded. The conditions which terminate the pulse are stored in a bitfield which is included in the pulse event structure for the pulse. Thepulse event structure will be described hereinafter. A finite statemachine may be used in a pulse detector to assist determining andtracking a pulse event.

[0098] Each pulse detector has its own configuration register (as partof the signal detector control registers) that stores values for each ofthe pulse parameters (described above) within which a pulse detectorwill process peak information. The following are examples of theseparameters.

[0099] PWRMIN: Minimum power threshold (1 dBm)

[0100] PWRMAX: Maximum power threshold (1 dBm)

[0101] BWTHRESH: Bandwidth threshold (1 dBm)

[0102] CFREQMIN: Min center frequency (fs/NFFT Hz)

[0103] CFREQMAX: Max center frequency (fs/NFFT Hz)

[0104] BWMIN: Min pulse bandwidth (fs/NFFT Hz)

[0105] BWMAX: Max pulse bandwidth (fs/NFFT Hz)

[0106] DURMAX: Max pulse duration (TMR_PULSE)

[0107] DURMIN: Min pulse duration (TMR_PULSE)

[0108] PWRHOLD: Power hold value (1 dB)

[0109] FRQHOLD: Frequency hold value (fs/NFFT Hz)

[0110] BWHOLD: Bandwidth hold value (fs/NFFT Hz)

[0111] FPCENTER: Current pulse center frequency (fs/NFFT Hz)

[0112] FPBW: Current pulse bandwidth (fs/NFFT Hz)

[0113] PWR: Current pulse power estimate (1 dBm)

[0114] The terms fs and TMR_PULSE are described above and/or referencedin FIGS. 1-3.

[0115] Each pulse detector can be configured by the MCU 700. The MCU 700writes appropriate values to the configuration register(s) of the signaldetector to configure one or more pulse detectors to look for andcharacterize a certain type of pulse in the frequency band. The controlregister controls clearing and resetting of a pulse detector so that itcan be reconfigured to look for a different type of pulse. The pulsedetector control register includes a field that identifies which, ifany, universal clock module of the universal signal synchronizer 400 isto be associated with the pulse detector. The universal clock module(UCM) is described hereinafter. When there is an association between thepulse detector and the universal clock module, the pulse detector storesthe counter value of that universal clock module into the pulse eventlist whenever it detects a pulse. The counter values can be used by theMCU 700 to phase lock a universal clock module to a periodicinterference source, as described hereinafter.

[0116] Each pulse detector outputs pulse event data for storage in theDPR 500. The following is an example of pulse event data.

[0117] SDID: Pulse detector identifier.

[0118] TERMCODE: Pulse termination codes:

[0119] Bit 0 (LSB): Pulse power outside of hold range

[0120] Bit 1: Center frequency outside of hold range

[0121] Bit 2: Bandwidth outside of hold range

[0122] Bit 3: Duration exceeds durMax

[0123] FCENTER: Center frequency (at beginning of pulse)

[0124] BW: Pulse bandwidth (at beginning of pulse)

[0125] DUR: Pulse duration in TMR_PULSE cycles. The pulse duration valueis given by t_(off)−t_(on), where t_(off) and t_(on) denote theTMR_TSTMP values latched at the FFT_START pulse associated with thefirst and last FFT of a detected pulse, respectively.

[0126] TIMEON: Timestamp for start of pulse event. TIMEON contains theTMR_TSTMP value latched at the FFT_START pulse associated with the firstFFT that produces a pulse detection match.

[0127] UCMCNT: Counter values from an associated universal clock module(UCM, described hereinafter) in the USS. The low-order 16 bits containthe UCM down counter value at the beginning of the pulse event. Theleast-significant 2 bits in the upper half-word contain the mod(N)counter value (also in the associated UCM) at the beginning of the pulseevent. If there is no associated UCM with a pulse detector, this fieldis set to all zeros.

[0128] PWR: Pulse power estimate (at beginning of pulse, 1 dBm)

[0129] The signal detector 200 outputs descriptions of detected pulsesas pulse events, containing the data described in the table above forexample, into a circular list called the pulse event list in the DPR500. A single list is used by all of the pulse detectors. The sourcepulse detector of an individual pulse event in the list is indicated bythe pulse event “SDID” field.

[0130]FIG. 9 illustrates exemplary signals and the corresponding pulseevent data. There is IEEE 802.11b signal activity consisting of pulses1-6. Pulses 1, 3 and 5 are the forward channel 802.11b transmissions andpulses 2, 4 and 6 are acknowledgement signals. There is also a frequencyhopping signal, such as a Bluetooth™ SCO signal comprising pulses 7-14.The timing, strength and duration of the signals are not shown atprecise scale.

[0131] Two pulse detectors are configured in a device where it isexpected that an 802.11b signal and a frequency hopping signal wouldoccur. A first pulse detector is configured to detect signals, such asthe 802.11 signals, and would have the following parameters: PulseBandwidth: 10 to 20 MHz Center Frequency: 36-38 MHz (To cover channel6-2437 MHz) Pulse Duration: 70 microsec to 20 msec Power: −30 dBm to −80dBm

[0132] It is possible that the first pulse detector could be configuredto detect a pulse on any frequency, but through prior general knowledgethat can be acquired by looking at the spectrum statistics, it ispossible to determine that an 802.11 signal pulse is occurring at aparticular frequency in the frequency band.

[0133] A second pulse detector is configured to detect signals such asthe frequency hopping signal and would have, for example, the followingparameters: Pulse Bandwidth: less than 2 MHz Center Frequency: 0 to 83MHz (i.e., anywhere in the 2.4 GHz band) Pulse Duration: Up to 1 msecPower: −50 dBm to −75 dBm

[0134] Exemplary pulse event data for these pulses are listed below. Forsimplicity, the time-on data associated with these pulses is omitted.

[0135] Pulse 1 SDID: 1 (identifying pulse detector 1) Pulse Bandwidth:11 MHz Center Frequency: 37 MHz Pulse Duration: 1.1 msec Power: −75 dBm

[0136] Pulse 2 SDID: 1 Pulse Bandwidth: 11 MHz Center Frequency: 37 MHzPulse Duration: 200 microsec Power: −60 dBm

[0137] Pulse 3 SDID: 1 Pulse Bandwidth: 12 MHz Center Frequency: 37 MHzPulse Duration: 1.1 msec Power: −75 dBm

[0138] Pulse 4 SDID: 1 Pulse Bandwidth: 11 MHz Center Frequency: 37 MHzPulse Duration: 200 microsec Power: −60 dBm

[0139] Pulse 5 SDID: 1 Pulse Bandwidth: 13 MHz Center Frequency: 37 MHzPulse Duration: 18 msec Power: −75 dBm

[0140] Pulse 6 SDID: 1 Pulse Bandwidth: 11 MHz Center Frequency: 37 MHzPulse Duration: 200 microsec Power: −60 dBm

[0141] The pulse event data for pulses 7-14 are very similar to eachother, with the exception of the center frequency. For example, pulses7-14 may have a pulse bandwidth of 1 MHz, a pulse duration of 350microsec, whereas the center frequency will vary across nearly all ofthe 2400 MHz to 2483 MHz frequency band. The SDID for pulses 7-14 is 2,since pulse detector 2 is configured to detect these types of pulses.

[0142] There are other signal detector functions. One or more pulsedetectors in the signal detector 200 may be configured to monitor pulseactivity and the signal detector 200 may send a snapshot buffer triggersignal (SD_SBEVT) to the snapshot buffer 300 when a pulse event occurscorresponding to a configured pulse detector. The signal detector willmonitor all pulse detectors and if any one of them detects such anevent, the snapshot trigger signal SD_SBEVT is generated, either on therising edge or falling edge of the detected pulse. The snapshot buffertrigger signal SD_SBEVT will cause the snapshot buffer 300 to capturesamples of the DataI and DataQ signals, as described hereinafter.

[0143] Similarly, the signal detector may be configured to monitoractivity on each pulse detector and send a spectrum analyzer triggersignal (SD_SAEVT) to the spectrum analyzer 100 (presumed to be in thetransitional mode) when a desired pulse event is detected by any one ofthe pulse detectors. Again, this spectrum analyzer trigger signal isgenerated either on the rising edge or falling edge of the detectedpulse. The SD_SAEVT signal is coupled to the SA memory controller 190which will output to the DPR 500 samples (snapshots) of the PDB(k) datafields.

[0144] Turning to FIGS. 10-12, the stats logic block 170 has modules toaccumulate statistics for power, duty cycle, maximum power and a peakshistogram. Statistics are accumulated in the DPR over successive FFTtime intervals. After a certain number of FFT intervals, determined by aconfigurable value stored in the spectrum analyzer control registers, aninterrupt is generated to the MCU so that the MCU reads out the statsfrom the DPR into its memory. For example, the stats are maintained inthe DPR for 10,000 FFT intervals before the MCU reads out the valuesfrom the DPR.

[0145]FIG. 11 illustrates an example of stats that are accumulated bythe stats logic module shown in FIG. 10. The table on the left side ofdB power values for exemplary frequencies during time intervals t=0through 5. The table on the right represents values updated in the DPRfor the SumPwr, DutyCnt and MaxPwr statistics at those frequencies. Inthis example, the peak. threshold is −50, and it is assumed that thereare essentially three peaks: a first from frequency bin 0 to frequencybin 20; a second from frequency bin 125 to frequency bin 175; and athird from frequency bin 200 to frequency bin 255. All other frequencybins are assumed to be at −100 dB. Though not shown as such, the SumPwrstatistic may be averaged by the MCU or another processor, and theDutyCnt may be converted to a percentage number.

[0146] To accumulate power stats, the PDB(k) data field is supplied tothe stats logic block 170. It may be decimated by an optional decimator172. The power at each frequency bin for a previous time interval isadded by the adder 174 to the power at that frequency bin for thecurrent time interval. The running power sum at each frequency bin isoutput to the DPR 500 as a SumPwr stat, also referred to hereinafter asthe average power stat.

[0147] A duty count stat is generated by comparing the PDB at eachfrequency bin k with a power threshold (SA_PWRTHRESH) at the adder 176and MSB block 178. Each time the power at a frequency bin exceeds thepower threshold, the previous duty count statistic for that frequencybin is incremented by the increment block 180. The output of theincrement block 180 is the duty count stat (DutyCnt), which again, is arunning count of the number of times the power at a FFT frequencyexceeds the power threshold.

[0148] A maximum power stat (MaxPwr) is tracked at each frequency bin.The current maximum power value at each frequency k is compared to thenew power value at each frequency k by the adder 182 and MSB block 183.The multiplexer 184 selects for output either the current power maximumor the new PDB(k), depending on whether the new PDB(k) exceeds thecurrent power maximum at the frequency.

[0149] The number of peaks that are detected by the peak detector duringeach FFT time interval is counted by the counter 185, buffered in theflip-flop (FF) 186 and stored in the histogram registers 187 for outputto the DPR 500. The PEAKEN signal is the output of the peak detectorthat goes high when a peak is detected. The PKDETSTART signal restartsthe counting process for a statistic update cycle.

[0150]FIG. 12 shows exemplary content of the histogram registers 187including a running count of the number of time intervals (i.e., statsupdate cycles) that have 0 peaks, 1 peak, 2 peaks, . . . up to 9 peaks.This histogram is useful to estimate the number of different devices ornetworks operating simultaneously at different frequencies in thefrequency band. As shown in FIG. 12, up until stats update cycle 5,there are two with no peaks, one stats update cycle with one peak andthree stats update cycles with three peaks.

[0151] The Snapshot Buffer

[0152] The snapshot buffer 300 is a flexible data storage and triggeringmechanism used to collect a set of raw ADC samples (DataI and DataQ orDataI′ and DataQ′, FIG. 2) for post-processing by the MCU 700. When asnapshot trigger condition is detected, the snapshot buffer 300 buffersup a set of ADC samples and asserts an interrupt to the MCU 700. The MCU700 may then perform background-level processing on the ADC samples forthe purposes of identifying or locating another device operating in thefrequency band, or these samples may be passed to a different processorat for processing.

[0153] In a pre-store mode, the snapshot buffer 300 writes continuouslyto the DPR 500 and stops writing and interrupts the MCU when a snapshottrigger signal is detected. In a post-store mode, the DPR writeoperation begins only after a trigger is detected. A combination pre andpost store scenario may be created (using the DELAYSTART and DELAYENDcontrol registers) to capture samples of the receive data signals bothbefore and after a snapshot trigger condition.

[0154] There are two types of snapshot trigger signals supported:SB_TRIG and SD_SBEVT. The snapshot trigger signal SD_SBEVT is sourcedfrom the signal detector 200 as described above, and the SB_TRIG signalis sourced from a module external to the SAGE 10, such as a locationmeasurement module. For example, the MCU 700 may be programmed tocollect raw ADC samples when a particular signal pulse is detected forsignal classification processes. The MCU 700 configures a pulse detectorto generate the snapshot trigger signal SD_SBEVT upon detecting a pulsethat meets a certain set of characteristics, as described above. Thesnapshot buffer 300 clears this bit when it has finished its processing(usually within one clock).

[0155] The snapshot buffer 300 samples may be stored in a variety offormats. One example of a format is one complex sample per 32-bit word.The high-order 16 bits contain the real part of the sample; thelow-order 16-bits contain the imaginary part. The real and imaginaryparts may be stored in a Q15 format, where 0 represents 0V on the ADC inthe RF Interface 800, and 0x7FFF and 0x8000 represent positive andnegative full-scale, respectively. A B-bit QN fractional number x takeson the values {n/2^(N), n=−2^(B−1), . . . , 2^(B−1)−1}. The B-bit signedinteger n=2^(N)*x is used to represent x and is usually stored as asigned, two's complement integer.

[0156] Examples of the control registers (and what they do) for thesnapshot buffer are described below.

[0157] DELAYSTART: Number of samples to wait after the SB_TRIG signalbefore starting to write into DPR. Only valid if CNTRL.PRESTORE=0.

[0158] DELAYEND: Number of samples to write into DPR before DPR writesare disabled and a “snapshot complete” interrupt is posted to the MCU.The count begins (1) when a trigger condition is asserted in prestoremode, or (2) DELAYSTART samples after a trigger condition in poststoremode.

[0159] STARTADDR: Address in DPR of first word of snapshot buffer.

[0160] ENDADDR: Address in DPR of last word of snapshot buffer.

[0161] WADDR: Starting write address into snapshot buffer(STARTADDR<=WADDR<=ENDADDR). When writing to the snapshot buffer, WADDRis incremented and after a write to ENDADDR, WADDR wraps back toSTARTADDR. After a snapshot operation is complete, MCU may use thisregister to determine the address of the most recent write into the DPR.

[0162] TSTMP: Contains the TMR_TSTMP value latched immediately after themost recent snapshot trigger condition was asserted.

[0163] The control register includes the fields described below.

[0164] PRESTORE: Trigger prestore mode select. 1=Prestore mode (samplesare written continuously to DPR while SB looks for a trigger signal)0=Poststore mode (samples written to DPR DELAY_START samples aftertrigger detected).

[0165] REP: Repetition mode select. 1=Continuous mode—After a triggersignal is detected, immediately start looking for next trigger andcontinue writing to DPR if prestore mode enabled. STATUS always reads 1in this mode. 0=One shot mode—Perform one snapshot buffering operation(during which STATUS will set to 1) and set STATUS to zero when done.

[0166] GO: Begin snapshot buffering operation. When GO is set to 0, SBis idle and does not look for a trigger. When the MCU sets GO to 1, SBstarts looking for a trigger signal and prestoring samples in DPR (onlyif PRESTORE set to 1).

[0167] STATUS: Status field. 00=SB in idle state due to GO=0. 01=Waitingfor trigger. Always set to 1 in continuous mode. 10=SB_TRIG detected inone shot mode and snapshot buffering operation complete. 11=SD_SBEVTdetected in one shot mode and snapshot buffering operation complete. TheSDID field indicates which pulse detector (1-4) caused the trigger.

[0168] SDID: Indicates which pulse detector caused the triggercondition.

[0169] The Dual Port RAM

[0170] The DPR 500 will be described with reference to FIGS. 13-16.

[0171] Referring first to FIGS. 13 and 14, the DPR 500 is partitionedinto several buffers or storage areas to store information generated bythe spectrum analyzer 100, signal detector 200 and snapshot buffer 300.A power vs. frequency circular buffer (PF Buf) 510 stores real-timepower vs. frequency information output by the spectrum analyzer 100. Thetable on the left in generally resembles the PF Buffer 510. A statsbuffer 520 stores SumPwr, DutyCnt, MaxPwr and peaks statistics output bystats logic module. FIGS. 11 and 12 show represented data that is storedby the stats buffer 520. A pulse event circular buffer 530 stores pulseevent data output by the signal detector 200 and a snapshot circularbuffer 540 stores raw ADC samples from the snapshot buffer 300.Information is exchanged between elements of the SAGE 10 and the DPR 500via the RAM interface (I/F) 550.

[0172] The DPR 500 is, for example, a 32-bit wide, synchronous DPR.Different clocks are used to drive the logic at each port. The CLKsignal is used on SAGE components side and the BUSCLK signal is used onthe MCU side. The DPR 500 is word addressable from the SAGE side andbyte addressable from the MCU side. An AHB bus interface maps aninternal MCU byte address into the corresponding word addresses (MDADDR)and byte enable (MDBYTEN) signals attached to the MCU side of the DPR.

[0173] The data structures used to manage the DPR buffers 510-540 arestored in the control registers associated with DPR. The MCU 700 isresponsible for configuring the addresses and relative sizes of eachbuffer using these control registers after reset.

[0174] Referring to FIGS. 15 and 16, the SAGE 10 uses circular lists tomanage some of the data stored in the DPR 500. As indicated above,buffers 510, 530 and 540 use circular lists. A circular list (Clist)consists of a list of fixed sized entries (ClistEntries) and amanagement structure (ClistMgt). The ClistEntries portion of the list isstored in the DPR 500. Each Clist has an associated ClistMgt structurewhich resides within the peripheral address space. The DPR location ofthe ClistEntries is held within ClistMgt. The entry size(ClistMgt.sizeofEntry) of the list is configurable. The Clist isessentially a circular buffer, i.e., a first-in-first-out (FIFO) buffer.

[0175] When performing input/output with a circular list, read and writeindices are maintained to indicate the next entry to be read or written.Whenever the end of the list is reached the index is wrapped back to thestarting position (i.e., circular list). Whenever a read or write indexis wrapped to the starting position, a corresponding read pass number orwrite pass number is incremented. This combination of index and passnumber is called a “position” or ClistPosition. The ClistPosition is,for example, a 32-bit quantity consisting of a 16-bit “pass” and a16-bit “index.” When the pass number is updated, the entire 32-bitClistPosition is written out as a single “atomic” operation. Similarly,a read operation reads the entire 32-bit ClistPosition to ensure thepass number and index components are consistent when wrap occurs.

[0176] The Universal Signal Synchronizer

[0177] The universal signal synchronizer 400 is useful to lock tointerfering periodic signal sources. The USS 400 consists of multipleprogrammable clock generators referred to as USS clock modules (UCMs)410. The MCU 700 can detect interference from a periodic signal sourcesuch as a Bluetooth™ headset, a cordless phone, etc., by examiningtraffic statistics gathered by the host communication device. Forexample, the MAC logic 750 will accumulate traffic statistics indicatinghow successful the host communication device has been in transmitting toand receiving information from other devices according to a MACprotocol, such as IEEE 802.11x, employed by the device. Trafficstatistics that may reveal the presence of an interferer are: (1)unacknowledged messages; (2) repeated cyclic redundancy code (CRC)errors; (3) low received signal strength, etc. For example, the factthat several messages are sent from the device that are not acknowledgedby the intended destination device is very revealing of interference inthe frequency band.

[0178] When the MCU determines to look for the cause of theinterference, it configures the appropriate frequency and phaseparameters corresponding to the interference source into a UCM 410, and,using pulse timing information from the signal detector 200,phase/frequency locks the UCM timing to the transmit timing for theinterference source. After phase/frequency lock has taken place, the UCMcan be used as a timing reference to prevent data transmissions to/fromthe MAC logic 750 (FIG. 1) from overlapping and interfering with dataexchanges with the interference source.

[0179] A block diagram of a UCM 410 is shown in FIG. 17. A timingdiagram for an exemplary interferer, such as a Bluetooth™ signal, isshown in FIG. 18. Each UCM clock interval consists of two on/offsegments (on=logic 1, off=logic 0), the duration of which is specifiedby the DurOn1, DurOff1, DurOn2, and DurOff2 registers 412, 414, 416 and418, respectively. The two segment UCM clock scheme is used toaccommodate interference sources such as Bluetooth SCO links thatexchange bidirectional data using two unequally-spaced pulses, as shownin FIG. 18. A multiplexer 420 selects input from one of the registers412 through 418, where selection from register 418 is via an adder 422coupled between the register 418 and an input to the multiplexer 420.

[0180] A down counter 424 is connected to the output of the multiplexer420 and counts down from the duration of each duration segment. A mod(N)counter 426 is connected to the down counter 424 and is used to reloadthe down counter 424 with the duration of the next segment after thedown counter 424 counts down to zero. For the case shown, the mod(N)counter 426 is a mod4 counter. An accumulator 428 is coupled to the mod4counter 424 and has a carry output that is coupled back to the adder422. The most significant bit (MSB) output of the mod4 counter 426 isused to drive the count input of the accumulator 428. The accumulator428 is a Z bit accumulator used to offset the UCM clock frequency,advancing or delaying the UCM clock by one TMR_CLK cycle every2^(Z)/freqOffset UCM cycles, where the freqOffset parameter isconfigurable by the MCU via an adder 430 coupled to the accumulator 428.There is a phaseOffset register 425 and a freqOffset register 427 thatthe MCU writes to for the purposes explained hereinafter.

[0181] In general, the clock module comprises at least N registers, eachof which stores a programmable duration value associated with one of twostates of a pulse of the communication signal, where N is equal to 2times the number of pulses in a cycle of the communication signal, andthe mod(N) counter coupled to the down counter counts up to N−1 by onein response to the down counter reaching zero and when reaching N−1,causing content of the next of the N registers to be loaded into thedown counter. The count input of the Z-bit accumulator 428 is coupled toan output of the mod(N) counter, and the adder 430 adds an output of theaccumulator 428 with the frequency offset value and supplies the sum toan input of the accumulator, wherein a carry output of the accumulatoris coupled to the Nth register to increment or decrement the value ofthe Nth register before it is loaded into the counter, thereby extendingor contracting the length of a cycle of the clock signal used to drivethe down counter by one clock pulse every 2^(Z)/(frequency offset value)clock cycles.

[0182] A UCM TMR_CLK frequency of f_(TMR) _(—) _(CLK)=2 MHz providessub-microsecond timing granularity on the pulse duration intervals. An18-bit register size for the duration registers 412-418 accommodatestransmission frequencies as low as 10 Hz. A 16-bit (Z=16) accumulator issuitable for the accumulator 428 to provide less than 0.01 ppm frequencyresolution for a UCM clock frequency of 1 kHz. The following additionalcharacteristics may apply to the UCM 410 shown in FIG. 17:

[0183] Output frequency=f_(CLK)/[(M+freqOffset)/2¹⁶]{tilde over()}f_(CLK)/M{1−(freqOffset/M2¹⁶)}Hz, whereM=DurOn1+DurOff1+DurOn2+DurOff2.

[0184] Frequency Resolution {tilde over ()}f_(CLK)/(M²2¹⁶)Hz=10¹⁶/(M2¹⁶)

[0185] Output clock frequency range: 1.9 Hz(DurOn1=DurOff1=DurOn2=DurOff2=2¹⁸−1) to 500 kHz(DurOn1=DurOff1=DurOn2=DurOff2=1)

[0186] When the MCU 700 detects and classifies a periodic interferencesource, it takes the following steps to lock the UCM timing to thetransmission timing associated with the interference source.

[0187] First, the MCU initializes and configures a UCM 410 to theappropriate (nominal) frequency using the DurOn and DurOff registers andit sets the content of the freqOffset register 425 to zero. The MCUwrites values to the duration registers based on knowledge gained aboutthe interferer from pulse events output by a pulse detector 220 (FIG. 3)and/or from snapshot buffer data supplied to the MCU that lead to theMCU determine that there is an interference event. The MCU alsoassociates a pulse detector with the UCM 410 and configures the pulsedetector to measure the phase offset between the interference source andthe UCM 410. During the synchronization process, information about thetiming of the interferer signal is obtained from pulse events generatedby the assigned pulse detector, and the MCU compares them against theduration values written into the duration registers. The pulse eventsinclude the count values of the down counter and the mod(N) counter atthe detection of a pulse, as described above in connection with thedescription of the signal detector.

[0188] The MCU examines the count values of the down counter and themod(N) counter to measure a phase error between the clock signal thatdrives the down counter and the occurrence of the pulse of thecommunication signal. The MCU removes the initial phase offset/errorbetween the UCM 410 and the interference source by loading a phaseadjustment value into the PhaseOffset register 425. This causes the UCM410 to retard the phase by the value specified in the PhaseOffsetregister 425 the next time the down counter 424 and mod4 counter 426cycle to zero.

[0189] After removing the initial phase offset, the MCU periodicallymonitors the phase count values of the down counter and the mod(N)counter in the pulse event data to measure the phase error. The MCUgenerates a frequency offset between the interference source (from thepulse detector) and the UCM clock and updates the FreqOffset register427 to compensate for frequency drift between the two signals. A blockdiagram of an update technique using a second order phase lock loop(PLL) is shown in FIG. 19, which will be described hereinafter. The MCUwrites a value into the FreqOffset register that causes the accumulator428 to retard or advance (depending on the sign of the adder 422) thefrequency a certain number of times per UCM clock cycles.

[0190] When the phase offset samples converge to zero, the UCM is saidto be phase/frequency locked to the interference source. Once the loopis locked, the MCU may let the UCM clock “flywheel” for a period of timewithout monitoring the phase offset from the interference source. TheMCU may continue to periodically monitor the phase offset and update theloop parameters since the clocks will eventually drift (primarily due totemperature changes in the near and far end reference oscillators). Agood rule of thumb to use for estimating the drift rate in this case is½ microsecond per second, assuming an oscillator with +/−20 ppm ofvariation over 70 degrees C. (4/7 ppm per degree C), and 3 degrees F=1.7degrees C. temperature variation over 5 minutes (due to air conditionerhysteresis, etc.).

[0191] Reference is now made to FIG. 19, which shows a process 440useful by the MCU to update for clock drifts. The process 440 updatesthe frequency offset between the clock of the interfering signal and thelocal clock operating the UCM. Step 442 represents the pulse detector220, associated with the particular interfering signal, generating phaseinformation by reading the states of down counter 424 and mod(N) counter426, and step 444 represents retrieving of information from the pulseevent circular list in the pulse event buffer 530 of the DPR 500.Multiple pulse events from the signal detector 200 may be buffered up inthe DPR 500 before the MCU has time to retrieve them. Next, in step 446,the phase detection information is updated depending on the value of thedown counter 424 relative to the value of the DurOn1 register 412. Ifthe down counter value 424 is less than the value of DurOne1 divided by2, then the phase detection information is set equal to the value of thedown counter 424. Otherwise, the phase detector information is set equalto the value of the down counter 424 less the value of the DurOn1register 412. In step 448, output of step 446 is averaged to reducenoise effects. Next, a filter or phase-lock-loop (PLL) process 449 isperformed to lock to the phase and frequency of the interfering signalclock. Any suitable first-order or second-order filtering or PLL processcan be used. FIG. 19 shows a second order PLL process comprising twoscaling operations 450 and 452, an adder 454, a z⁻¹ block 456 and anaccumulator 458. The parameters k1 and k2 are PLL constants that dependon the UCM clock rate and a buffering factor of the pulse event circularlist in the DPR. The output of the process 440 is a frequency offsetvalue that is stored for later use in synchronizing to the near clockand the far-end clock (that of the particular interfering signal). Oncethe frequency offset value is computed, the interfering signal can beignored for a period of time, and the UCM can more quickly lock to theinterfering signal by loading the stored frequency offset (FreqOffset)into the FreqOffset register 427 of the UCM as shown in FIG. 17.

[0192] Examples of the registers used to control and monitor a UCM 410from the MCU are described below.

[0193] DURON1: Duration in TMR_PULSE cycles of first “on” interval of aUCM clock cycle. The MCU may update this value anytime (regardless ofwhether the UCM is enabled).

[0194] DUROFF1: Duration in TMR_PULSE cycles of first “off” interval ofa UCM clock cycle. The MCU may update this value anytime (regardless ofwhether the UCM is enabled).

[0195] DURON2: Duration in TMR_PULSE cycles of second “on” interval of aUCM clock cycle. The MCU may update this value anytime (regardless ofwhether the UCM is enabled).

[0196] DUROFF2: Duration in TMR_PULSE cycles of second “off” interval ofa UCM clock cycle. The MCU may update this value anytime (regardless ofwhether the UCM is enabled).

[0197] FREQOFFSET: Creates a frequency offset of (F_(TMR) _(—)_(PULSE)*FREQOFFSET)/(M²*2¹⁶) Hz relative to the nominal clock frequency(F_(TMR) _(—) _(PULSE)/M) on the UCM clock. The CNTRL.FOFFSET bitspecifies the sense of the offset. If CNTRL.FOFFSET=1, a positivefrequency offset is applied, otherwise a negative frequency offset isapplied (a positive frequency offset corresponds to ahigher-than-nominal UCM clock frequency). The MCU may update this valueanytime (regardless of whether the UCM is enabled).

[0198] PHASEOFFSET: Retards the phase of the UCM clock by PHASEOFFSETTMR_PULSE cycles by loading the value PHASEOFFSET into the Down Counterat the end of the next Dur1Off interval. The phase adjustment is madeonce each time the PHADJUST bit in the CNTRL register is set.

[0199] MINGAP: If the time between two consecutive interference eventson the UCM signals specified by USS_SELECT is less than MINGAPTMR_PULSEs, the USS will merge the two events and report on them as ifthey were one interference event spanning both interference pulsedurations.

[0200] DOWNCTR: Contents of UCM down counter register (updated once perTMR_PULSE)

[0201] The fields of the control register for a UCM are defined below.

[0202] ENABLE: UCM enable. Setting the ENABLE bit for 1 TMR_PULSE cyclecauses the clock to start counting in the Dur1Off state. Clearing ENABLEfor 1 or more TMR_PULSEs causes the UCM clock to stop counting.

[0203] PHADJUST: Writing a 1 to this bit causes the UCM to retard itsclock phase by PHASEOFFSET TMR_PULSE cycles by loading the valuePHASEOFFSET into the Down Counter at the end of the next Dur1Off clocksegment. The UCM clears this bit after the phase change has taken place.

[0204] FOFFSET: Specifies whether a positive or negative frequencyoffset is to be applied using the FREQOFFSET field. 1=Positive frequencyoffset applied. 0=negative frequency offset applied

[0205] MOD4CT: Contents of Modulo 4 counter

[0206] The USS 400 passes UCM timing information to an externalcomponent, such as the MAC logic 750, using the NEXTINTFDUR andNEXTINTFTIME signals described hereinafter. The USS_SELECT signals, alsodescribed in the table above, allow for selection of which UCMs toinclude in next event calculation.

[0207] Other Interfaces to the SAGE

[0208] With reference to FIG. 1, other interfaces to the SAGE 10 will bedescribed. The global timer interfaces (GTI) are used by the spectrumanalyzer 100 and signal detector 200 to timestamp transmission events inthe sampled frequency band. The GTI comprises, for example, thetimestamp signal (TMR_TSTMP) and a global timer clock signal(TMR_PULSE), where TMR_PULSE=1 on the positive edge of BUSCLK indicatesa new value of TMR_TSTMP. The GTI logic runs at the BUSCLK clockfrequency. The TMR_TSTMP field is updated periodically, such as at 2MHz, during BUSCLKs in which TMR_CLK=1.

[0209] The SAGE 10 communicates timing information for periodicinterference sources (such as Bluetooth headsets or cordless phones) toanother hardware element (external to the SAGE 10), such as the MAClogic 750. There are primarily three MAC interface signals, USS_SELECT,NEXTINTFDUR and NEXTINTFTIME. NEXTINTFDUR is the duration in TMR_PULSEsof the next interference event among the selected UCM clocks viaUSS_SELECT. The interference condition is said to be active (due to aninterferer's transmission) when any of the selected UCM clocks is high.When all of the selected interference sources are inactive (i.e., allUCM clocks are low), NEXTINTFDUR indicates the duration of the nextinterference event in TMR_PULSEs. When at least one of the interferencesources is active, NEXTINTFDUR indicates the time in TMR_PULSEs untilthe end of the current interference transmission, and is updated onceper TMR_PULSE.

[0210] NEXTINTFTIME is the time remaining in TMR_PULSEs until the nextinterference event among the selected UCM clocks via USS_SELECT. Theinterference condition is said to be active (due to an interferer'stransmission) when any of the selected UCM clocks is high. When all ofthe selected interference sources are inactive, NEXTINTFTIME indicatesthe time until the next interference event and is updated once perTMR_PULSE. When at least one of the interference sources is active,NEXTINTFTIME reads zero.

[0211] USS_SELECT is a signal that selects which USS UCMs 410 to includein the next interference event calculations, as reported to the MAClogic 750 through the NEXTINTFXXX signals. USS_SELECT[i]=1 means includeUCM(i) in the calculation.

[0212] Examples of MCU interface signals are described below. Some ofthese signals are identified in FIGS. 1, 3 and 6.

[0213] ADDR: Control register word address

[0214] BUSCLK: Clock used to control the MCU side of the DPR, USS, LowerMAC and Global Timer interfaces:

[0215] IRQ: Level-triggered interrupt request to MCU. Whenever anenabled interrupt condition becomes active, SAGE 10 asserts an interruptto the MCU by setting IRQ to 0. The MCU clears the interrupt by clearingthe appropriate bits in the IF register. SAGE automatically sets IRQ to1 when all active interrupt conditions have been cleared in the IFregister.

[0216] MDADDR: DPR word address—MCU side

[0217] MDBYTEEN: DPR byte enable—MCU side

[0218] MDRD: DPR read strobe—MCU side

[0219] MDRDATA: DPR read data—MCU side

[0220] MDWR: DPR write strobe—MCU side

[0221] MDWDATA: DPR write data—MCU side

[0222] RD: Control register read strobe

[0223] RDATA: Control register read data

[0224] SDADDR: DPR word address—SAGE side

[0225] SDRD: DPR read strobe—SAGE side

[0226] SDRDATA: DPR read data—SAGE side

[0227] SDWR: DPR write strobe—SAGE side

[0228] SDWDATA: DPR write data—SAGE side

[0229] WR: Control register write strobe

[0230] WDATA: Control register write data

[0231] Operation and Uses of the SAGE

[0232] With reference to FIG. 20, one example of how the SAGE 10 may beoperated is described. The SAGE 10 may reside in a communication devicethat comprises the radio transceiver 600 and a MCU 700. In addition, forhigher level processing, a host processor 900 may also be provided thatis coupled to the MCU 700. The MCU 700 and host processor 900 may shareresponsibility for configuring the SAGE 10 and the radio transceiver600. The host processor 900 may be responsible for more complexfunctions. However, it should be understood that the functions of theMCU 700 and the host processor 900 may be executed by a single processorof suitable processing capability and power consumption characteristics.The radio transceiver 600 is shared by the SAGE 10 and othercommunication device functions, such as receiving signals from ortransmitting signals to another communication device. The receiver ofthe radio transceiver 600 cannot be used by the SAGE 10 when thecommunication device is receiving a signal, and in some cases, the sameis true when the communication device is transmitting a signal toanother device.

[0233] There are many ways to employ the features and functions of theSAGE 10, some examples of which are explained. The MCU 700 or the hostprocessor 900 may be programmed to configure the receiver portion of theradio transceiver 600 to operate in a wideband mode, thereby samplingactivity in an entire frequency band for a time period, such as 100 msecor longer. In addition, the MCU 700 or host processor 900 may configurecertain basic parameters of the SAGE 10, such as the decimator factor,the cycle count of the number of spectrum analyzer updates (i.e., FFTintervals) before forwarding the stats to the MCU 700, the minimum powerthreshold for duty counting, the lowpass filter parameter of thespectrum analyzer. The receiver portion of the radio transceiver 600 mayalso be configured to operate in a narrowband mode at a configurablecenter frequency.

[0234] While the radio transceiver 600 is operated in a wideband mode,the SAGE 10 is activated to “sniff” the spectrum with the spectrumanalyzer component of the SAGE 10. The spectrum analyzer stats, such asthose shown in FIGS. 11 and 12, are accumulated in the DPR and read bythe MCU 700 and further processed by the host processor 900. During thissniff mode, the pulse detectors of the signal detector component may beconfigured in a default mode to look for signal pulses of commonlyexpected signals in the frequency band. In the case of an unlicensedfrequency band, such signals may include an IEEE 802.11 signal, acordless phone signal, or a Bluetooth™ frequency hopping signal.Alternatively, during the sniff mode the output of the pulse detectorsmay be completed ignored and the spectrum analyzer stats processed todetermine generally what is happening in the frequency band. Based onintelligence gathered by the spectrum analyzer stats generated from thesniff mode, the host processor 900 or MCU 700 may configure one or morepulse detectors of the SAGE 10 to look for certain types of signalpulses in the frequency band using the pulse detector configurationparameters described above.

[0235] Still another possibility is to iteratively change theconfiguration of one or more pulse detectors so as to cycle throughpulse detector configurations over time. For example, the centerfrequency, bandwidth, pulse duration and/ or time between pulsesparameters can be changed to process incoming signal data. The incomingsignals are processed during each cycle with the one or more pulsedetectors. Eventually, by cycling through different pulse detectorconfigurations, the goal is to eventually find a pulse detectorconfiguration that fits the type of signal activity occurring in thefrequency band. This is useful, for example, in a signal classificationprocess.

[0236] Further operation of the SAGE to gather output from the signaldetector may occur while the radio is in a wideband mode or a narrowbandmode, depending on the demands of the radio for communication servicesand the type of signals suspected to be present in the frequency band.Whether configured based on information gathered from a sniff mode, oroperated using predetermined configuration information, the pulsedetectors will generate pulse event information that is output to theMCU 700, together with spectrum analyzer stats and any snapshot buffereddata. In addition, the universal signal synchronizer component of theSAGE 10 may be operated by the MCU to synchronize to the clocks ofpotentially interfering communication signals in the frequency band.This synchronization information can be used in an interferencemitigation or co-existence algorithm executed by the MCU 700 or the hostprocessor 900 to schedule transmissions by the communication device soas to avoid collisions with other communication signals in the frequencyband.

[0237] In addition, the output of the SAGE 10 can be used in a signalclassification process to identify/classify signals in a frequency band,such as for example: a wireless headset operating with a frequencyhopping communication protocol (e.g., Bluetooth™); wireless file/printservices; radar systems; microwave ovens, an IEEE 802.11 wireless localarea network; a HomeRF™ network; a frequency hopping cordless phone; ananalog cordless phone; wireless infant/security monitors; devicesoperating using the IEEE 802.15.3 communication protocol. A signalclassification process is disclosed in the aforementioned commonlyassigned patent application.

[0238]FIG. 21 illustrates an exemplary block diagram of a device, calleda spectrum sensor, which employs the SAGE 10. The spectrum sensor is adevice that receives signals in the frequency band of interest. In thissense, the spectrum sensor is a spectrum monitor of a sort. The spectrumsensor comprises at least one radio receiver capable of downconvertingsignals in the frequency band of interest, either in a wideband mode orscanning narrowband mode. It is possible, as shown in FIG. 21, that thespectrum sensor comprises one or more radio receivers 610 and 620(dedicated to different unlicensed bands) or a single dual band radioreceiver. There is an ADC 640 that converts the output of the radioreceiver to digital signals that is then coupled to the SAGE 10. A DAC650 may be useful to supply control signals to the radio receiver via aswitch 630.

[0239] An interface 570, such as a Cardbus, universal serial bus (USB),mini-PCI, etc., interfaces the output of the SAGE 10 to a host device3000 or another device. In addition, there may be an optional embeddedprocessor 572 to perform local processing, an Ethernet block 574 tointerface to a wired network, FLASH memory 576 and SDRAM 578. There arealso an optional lower MAC (LMAC) logic block 4080 associated with aparticular communication protocol or standard (“protocol X”) and a modem4090 associated with protocol X. Protocol X may be any communicationprotocol that operates in the frequency band, such as an IEEE 802.11xprotocol. Multiple protocols may be supported by the device. Many of theblocks may be integrated into a gate array ASIC. The larger block aroundthe radio(s) and other components is meant to indicate that the spectrumsensor device may be implemented in a NIC form factor for PCI ormini-PCI deployment. Alternatively, many of these components, save theembedded processor, may be implemented directly on a processor/CPUmotherboard.

[0240] The host device 3000 may be a computer (e.g., PC) having aprocessor 3002 and memory 3004 to process the spectrum activityinformation supplied by the spectrum sensor via a wired networkconnection, USB connection, or even a wireless connection (such as an802.11x wireless network connection). The memory 3004 may store softwareto enable the host processor 3002 to execute processes based on theoutput of the SAGE 10, including signal classification, locationmeasurement, etc., as further described hereinafter. A display monitor3010 may be coupled to the host device 3000. The host device 3000 may bea desktop or notebook personal computer or personal digital assistant,or any other computer device local to or remote from the spectrumsensor. The memory 3004 in the host device may also store driversoftware for the host device, such as drivers for operating systems suchas Windows operating systems (Windows® XP, Windows® CE, etc.).

[0241] Either the embedded processor 4040 or the host processor 3002 mayimplement upper MAC logic associated with Protocol X. For example, ifProtocol X is an IEEE 802.11x protocol, the processor 404 or processor3002 may generate 802.11 statistics.

[0242] Examples of IEEE 802.11 MIB Global Extensions that may beprovided are: Rx Bad Ver/Type; Rx Too Long; Rx Bad Multicast; Rx Self;Rx CTS other STA; Rx CTS Unexpected; Rx Ack other STA; Rx ACKUnexpected; Channel Rx Time; Tx Opps Skipped; Channel Tx Time; Tot/NumDeferrals; Num Deferrals; Rx CCA (802.11, non); Rx Filtered by Cause; RxForwarded by Type; Rx No Buffer; Tot Chan CCA; and Tot Chan Idle.

[0243] Examples of IEEE 802.11 MIB Extensions that may be provided forSTAs are: Tot Chan Disable Time Last Rx/Tx; Rx Undefined Key; Rx RTSother STA; Rx CTS expected; Tx ACK/CTS; Tx Dropped (retries); Rx TimeoutACK/CTS; Rx ACK frags; Retry Attempt Histogram; Tx Size PER Histogram;Rx CRC for CTS/ACK; and Rx Too Small; Rx ACK Expected.

[0244] Still another variation is to implement the functions of the SAGE10 in software on the host processor 3002. The output of the ADC 640 ofany one or more device(s) operating in the frequency band (particularlythose devices having a wideband capable radio receiver) can be suppliedto a host processor where the SAGE and other functions described hereinare performed entirely in software, such as the measurement engine,classification engine, etc. For example, the output of the ADC 640 maybe coupled across any one of the interfaces shown in FIG. 21 to the hostprocessor 3002.

[0245] The spectrum sensor may be deployed in any device that resides ina region where operation in an unlicensed or shared frequency band isoccurring. For example, it can reside in a consumer device such as acamera, home stereo, peripheral to a PC, etc. Any other device connectedto a spectrum sensor may obtain the spectrum knowledge that the spectrumsensor acquires.

[0246] Referring first to FIG. 22, an environment is shown where thereare signals of multiple types that may be simultaneously occurring. Forexample, at some point in their modes of operation, there are multipledevices that may transmit signals within a common frequency band. Whenthese devices are sufficiently close in proximity to each other, ortransmit signals at sufficiently high power levels, there willinevitably be interference between signals of one or more devices. Thedotted-line shown in FIG. 22 is meant to indicate a region whereactivity from any of the devices shown may impact other devices. FIG. 22shows a non-exhaustive exemplary selection of devices that may operatein an unlicensed frequency band, including cordless phones 1000,frequency hopping communication devices 1010, microwave ovens 1020, Awireless local area network (WLAN) comprised of a WLAN station (STA1)1030 and a WLAN STA2 1040 associated with a WLAN access point (AP) 1050,infant monitor devices 1060 as well as any other existing or newwireless devices 1070. The WLAN AP 1050 may be connected to a wirednetwork (e.g., Ethernet network) to which also connected is a server1055 computer that exchanges data with the WLAN STAs 1030 and 1040using, for example, an IEEE 802.11x communication standard. Cordlessphones 1000 may be analog, digital and frequency hopping devices,depending on the type. Frequency hopping communication devices 1010 mayinclude devices operating in accordance with the Bluetooth™ wirelesscommunication protocol, the HomeRF™ wireless communication protocol, aswell as cordless phones. In addition, radar devices 1080 may operate inan unlicensed frequency band. Finally, there may be one or severalspectrum sensor devices 1200, 1210 and 1220 that are positioned atvarious locations in the frequency band and include the SAGE to monitoractivity in the frequency band. Any one or more of the other devicesshown in FIG. 22 may also include the SAGE, such as a WLAN STA or WLANAP.

[0247] Also shown in FIG. 22 is a network management station 1090 thatmay play a role in the spectrum management system described hereinafter.The network management station 1090 need not physically reside in theregion where the other devices are operating. The network managementstation 1090 may be connected to the same wired network as the server1055 and may receive spectrum activity information from the WLAN AP 1050and/or from a spectrum sensor 1210. The network management station 1090has, for example, a processor 1092, a memory 1094 that stores one ormore software programs executed by the processor and a display monitor1096. The network management station 1090 may also execute one or moresoftware programs that manage wired networks as well as wirelessnetworks.

[0248] Currently, in the United States, the unlicensed frequency bandsare in the Industry, Scientific and Medical (ISM) and UNII frequencybands, and include an unlicensed frequency band at 2.4 GHz andunlicensed frequency bands at or near 5 GHz. These are only examples ofexisting unlicensed bands. In other countries, other portions of thespectrum have been, or may be, set aside of unlicensed use. Bydefinition, an “unlicensed” frequency band generally means that no oneuser has any preferred rights to use that frequency band over another.No one party has purchased exclusive rights to that spectrum. There area set of basic power and bandwidth requirements associated with theunlicensed band, but any user that operates within those requirements isfree to use it at any time. A consequence of the “unlicensed” characterof these frequency bands is that devices operating in them willinevitably interfere with the operation of each other. When interferenceoccurs, a signal from one device to another may not be receivedproperly, causing the sending device to retransmit (and thereforereducing throughput), or possibly entirely destroying the communicationlink between two communication devices. Moreover, because thesefrequency bands are free to use, the zero-cost encourages moreapplications and users of the unlicensed band, which in turn, will makeit more crowded and more susceptible to interference. There is,therefore, a need to manage the operation of devices operating in anunlicensed frequency band to ensure efficient and fair usage by allusers.

[0249]FIG. 23 is diagram illustrating how the SAGE 10 may be part of alarger spectrum management system. The SAGE 10 in cooperation with theradio 600 generates spectrum activity information that is used by one ormore software programs. SAGE drivers 5000 are used by the one or moresoftware applications to configure and access information from the SAGE10. Examples of software the software programs that may use informationfrom the SAGE 10 including a measurement engine 5100, a classificationengine 5120, a location engine 5130 and a spectrum expert 5140. Theseprocesses may be executed by an embedded processor or host processor(see FIG. 21). Controls generated by the spectrum expert 5140, networkexpert 5210 or other applications are coupled to a device through thespectrum aware drivers 5020, which in turn may control the basebandsignal processing (e.g., modem) 5010 and/or the radio 600.

[0250] At still a higher level above these software programs may behigher level application services 5200, such as user interfaceapplications, network management applications, etc. A network spectruminterface (NSI) 5150 serves as an application programming interfacebetween the higher level application services 5200 and the processes onthe other side of the NSI 5150.

[0251] The measurement engine 5100 collects and aggregates output fromthe SAGE 10 and normalizes the data into meaningful data units forfurther processing. Specifically, the measurement engine 5100accumulates statistics for time intervals of output data from the SAGE10 to track, with respect to each of a plurality of frequency bins thatspan the frequency band, average power, maximum power and duty cycle. Inaddition, the measurement engine 5100 accumulates pulse events forsignal pulses output by the SAGE that fit the configured criteria. Eachpulse event may include data for power level, center frequency,bandwidth, start time, duration and termination time. The measurementengine 5100 may build histograms of signal pulse data that are usefulfor signal classification. Finally, the measurement engine 5100accumulates raw received signal data (from the snapshot buffer of theSAGE 10) useful for location measurement in response to commands fromhigher levels in the architecture. The measurement engine 5100 maymaintain short-term storage of spectrum activity information.Furthermore, the measurement engine 5100 may aggregate statisticsrelated to performance of a wireless network operating in the radiofrequency band, such as an IEEE 802.11 WLAN. In response to requestsfrom other software programs or systems (via the network spectruminterface described hereinafter), the measurement engine 5100 respondswith one or more of several types of data generated by processing thedata output by the SAGE 10.

[0252] The classification engine 5120 compares the outputs of the SAGE10 against data templates and related information of known signals inorder to classify signals in the frequency based on energy pulseinformation detected by the SAGE. The classification engine 5120 candetect, for example, signals that interfere with the operation of one ormore devices (e.g., occupy or occur in the same channel of theunlicensed band as a device operating in the band). The output of theclassification engine 5120 includes classifiers of signals detected inthe frequency band. A classification output may be, for example,“cordless phone”, “frequency hopper device”, “frequency hopper cordlessphone”, “microwave oven”, “802.11x WLAN device”, etc. The classificationengine 5120 may compare signal data supplied to it by the measurementengine against a database of information of known signals or signaltypes. The signal classification database may be updated for new devicesthat use the frequency band. In addition, the classification engine 52may output information describing one or more of the center frequency,bandwidth, power, pulse duration, etc. of the classified signal, whichis easily obtained directly from the signal detector output of the SAGE.This may particularly useful for a classified signal that is determinedto interfere with operation of other devices in the frequency band.

[0253] Examples of signal classification techniques are described incommonly assigned co-pending U.S. application Ser. No. 10/246,364, filedSep. 18, 2002, entitled “System and Method for Signal Classification ofSignals in a Frequency Band,” the entirety of which is incorporatedherein by reference. These signal classification techniques that may beused are based on pulse histograms, pulse time signatures and othercustom algorithms, examples of which are described in the aforementionedpending patent application. It should be understood that other signalclassification techniques may be used with the output of the SAGE 10.

[0254] The location engine 5130 computes the physical location ofdevices operating in the frequency band. One example of a locationmeasurement technique involves using snapshot buffer data collected bythe measurement engine 5100 to perform time difference of arrivalmeasurements at known locations of a signal transmitted by the device tobe located and another reference signal to determine a location of avariety of devices (such as interferers) operating in the region of thefrequency band. Sometimes simply moving an interferer to a differentlocation can resolve transmission problems that another device ornetwork of devices may be experiencing. The location engine 5130 maycoordinate measurements obtained from multiple locations in the network.An example of a location engine is disclosed in commonly assignedco-pending U.S. application Ser. No. 60/319,737, filed Nov. 27, 2002,entitled “System and Method for Locating Wireless Devices in anUnsynchronized Wireless Network,” the entirety of which is incorporatedherein by reference.

[0255] Many other techniques to determine the location of wireless radiocommunication devices are known in the art and may be used as well. Thelocation engine 5130 may alternatively reside in software “above” theNSI 5150. When an interference condition in the frequency band isdetected, the spectrum expert 5140 may command the location engine 5130to locate the source of the interferer. The output of the locationengine 5130 may include position information, power level, device typeand/or device (MAC) address. In addition, a network security applicationbelow or above the NSI may command the location engine 5130 to locate arogue device that may present a possible security problem.

[0256] The spectrum expert 5140 is a process that optimizes operation ofdevices operating in the frequency band, given knowledge about theactivity in the frequency band obtained by the measurement andclassification engines. For example, the spectrum expert 5140 processesdata from the SAGE 10 and optionally statistics from a particularwireless network operating in the frequency band, such as an IEEE802.11x network, in order to make recommendations to adjust parametersof a device, or to automatically perform those adjustments in a device.The spectrum expert 5140 may be a software program that is executed, forexample, by a network management station. Parameters that can beadjusted (manually or automatically) based on output of the spectrumexpert 5140 include frequency channel, transmit power, fragmentationthreshold, RTS/CTS, transmit data rate, CCA threshold, interferenceavoidance, etc. Example of interference mitigation techniques aredescribed in commonly assigned and co-pending U.S. application Ser. No.10/248,434, filed Jan. 20, 2003, and entitled “Systems and Methods forInterference Mitigation with Respect to Periodic Interferers inShort-Range Wireless Applications,” the entirety of which isincorporated herein by reference. The spectrum expert 5140 may operateon triggers for alert conditions in the frequency band, such asdetection of a signal that interferes with the operation of a device ornetwork of devices operating in the frequency band, to automaticallyreport an alert, and/or adjust a parameter in a device in responsethereto. For example, the spectrum expert 5140 may operate to control orsuggest controls for a single WLAN AP.

[0257] The NSI 5150 may be transport independent (e.g., supportsSockets, SNMP, RMON, etc.) and parses spectrum information intosub-sections for session and radio control, measurement, events(classification), location and protocol specific enhanced statistics andcontrols. End user on-demand commands to check the spectrum knowledge oractivity information at a particular device may be received from anapplication residing above the NSI 5150 and translated into a requestfor a particular process below the NSI 5150 to supply the requestedinformation.

[0258] The higher level application services 5200 may include softwareand systems that perform broader analysis of activity in a frequencyband, such as managing multiple WLANs, managing a WLAN associated withone or more wireless LANs, network security for both wired and wirelessLANs, etc. These applications may call upon the services of any one ormore of the software processes shown on the other side of the NSI 5150.For example, there may be a network expert 5210, security services 5220,location services 5230, user interfaces 5240, and systems integrations5250 to integrate the lower level processes with other applications,such as a network management application 5260. For example, the networkmanagement application 5260 may be executed by the network managementstation 1090 that is located in a central monitoring or control center(telephone service provider, cable Internet service provider, etc.)coupled to the sensor devices, APs, etc., as well as the devices whichit controls (e.g., APs) via a wide area network (WAN) connection, e.g.,the Internet, a dedicated high speed wired connection, or other longerdistance wired or wireless connection.

[0259] An example of a security application use of the SAGE 10 is toidentify a particular device for security purposes based on its pulsesignature. For example, a network management system may manage awireless network, such as an IEEE 802.11 network. Security of thewireless network is one function of the network management system. Eachdevice authorized to operate in the wireless network may be assigned anaddress used to associate and operate in the network. An IEEE 802.11access point (AP) may also require authorization to operate. Whenever adevice goes active in the wireless network, whether it is a station(STA) or AP, its pulse characteristics are captured when it transmits(by a device operating in the network having a SAGE 10) to verifywhether it is an authorized device (i.e., not a fraudulent devicemasquerading as an authorized device). These characteristics may includevery specific pulse duration, pulse bandwidth, pulse power, etc. thatmay uniquely identify each device. The network management system maystore a database of pulse characteristics against addresses (e.g., MACaddresses or IP addresses) for each device. When a device transmits, itwill inevitably include an address that is recognized by an AP in thenetwork. The pulse characteristics (captured by a SAGE enabled device,such as an AP operating in the band) associated with a signaltransmitted by a device on an address are compared to the data in thedatabase for that address. If there is a substantial match, the deviceis said to be authorized. If there is not a match, the device isdeclared to be unauthorized and steps can be taken to investigate thatdevice further. Consequently, a fraudulent device masquerading as avalid device under a valid address can be detected.

[0260] Spectrum Activity Information and Accessing it Using the NSI

[0261] The measurement engine 5100, classification engine 5120, locationengine 5130 and spectrum expert 5140 perform spectrum analysis functionsand generate information that may be used by application programs orsystems that access these functions through the NSI 5150. The NSI 70 maybe embodied by instructions stored on a computer/processor readablemedium and executed by the processor (server 1055 or network managementstation 1090) that executes the one or more application program orsystems. For example, this processor would execute instructions for anNSI “client” function that generates the request and configurations forspectrum analysis functions and receives the resulting data for theapplication program. The processor(s) that execute(s) the measurementengine, classification engine, location engine and/or spectrum expertwill execute instructions stored on an associated computer/processorreadable medium (shown in FIGS. 20-22) to execute an NSI “server”function that responds to requests from the NSI client to generateconfiguration parameters and initiate spectrum analysis functions by themeasurement engine, classification engine, location engine and/orspectrum expert to perform the requested spectrum analysis function andreturn the resulting data. The measurement engine may in turn generatecontrols for the SAGE drivers 5000 to configure the SAGE 10 and/or radio600.

[0262] It should be further understood that the classification engine,location engine and spectrum expert can be viewed as a client to themeasurement engine and would generate requests to, and receive datafrom, the measurement engine similar to the manner in which anapplication program would interact with the measurement engine. Furtherstill, the spectrum expert can be viewed as a client to theclassification engine and location engine and request analysis servicesof those engines.

[0263] The NSI 5150 may be transport independent (e.g., supportsSockets, SNMP, RMON, etc.) and may be designed for implementation in awired or wireless format, such as by TCP/IP traffic from an 802.11 AP toa PC which is running software designed to accept the traffic forfurther analysis and processing. The TCP/IP traffic (or traffic usingsome other network protocol) could also be carried by a PCI bus inside alaptop PC, provided the PC has built-in 802.11 technology, or an 802.11NIC. If the source of the spectrum information data stream is a TCP/IPconnection, the application program would implement a socket, and accessthe correct port, to read the data stream. A sample of typical code forthis purpose is shown below. (The sample is in Java, and showsclient-side code.) Once the port connection to the data stream isestablished, the use of the data stream is determined by the networkmanagement software itself. ! Open Socket and Port (Remember to firstassign the correct value ! for the 802.11 device PortNumber) SocketMyClient; try { MyClient = new Socket(“Machine name”, PortNumber); }catch (IOException e) { System.out.println(e); } ! Create input streamto get data from NSI DataInputStream input; try { input = newDataInputStream(MyClient.getInputStream( )); } catch (IOException e) {System.out.println(e); } ! Create DataOutputStream to send controlcommands and ! configuration data to NSI DataOutputStream output; try {output = new DataOutputStream(MyClient.getOutputStream( )); } catch(IOException e) { System.out.println(e); }

[0264] The class DataInputStream has methods such as read. The classDataOutputStream allows one to write Java primitive data types; one ofits methods is writeBytes. These methods can be used to read data from,and write data to, the NSI 5150.

[0265] If the transport of the data stream occurs over other low-levelmedia, other methods are used to access the data stream. For example, ifthe data is carried over a PC's PCI bus, a PCI device driver willtypically provide access to the data.

[0266] The information provided by the NSI to an application programcorresponds to data generated by the measurement engine 5100 (throughthe SAGE), classification engine 5120, location engine 5130, and/or thespectrum expert 5140.

[0267] In acting as the API, the NSI has a first group of messages thatidentify (and initiate) the spectrum analysis function (also called aservice or test) to be performed and provide configuration informationfor the function. These are called session control messages and are sentby the application program to the NSI. There is a second group ofmessages, called informational messages, that are sent by the NSI (afterthe requested spectrum analysis functions are performed) to theapplication program containing the test data of interest.

[0268] Most of the spectrum analysis functions (i.e., tests) havevarious configuration parameters, which are sent via session controlmessages, and which determine specific details of the test. For example,in monitoring the spectrum, session control messages tell the NSI howwide the bandwidth should be (narrowband or wideband), and the centerfrequency of the bandwidth being monitored. In many cases, detailed testconfiguration parameters for a spectrum analysis function can be omittedfrom the session control messages. In those cases, the NSI uses defaultsettings.

[0269] Examples of spectrum analysis functions that the measurementengine 5100 (in conjunction with the services of the SAGE 10) mayperform, and the resulting data that is returned, include:

[0270] Spectrum Analyzer Power vs. Frequency Data. This data describesthe total power in the spectrum as a function of frequency, over a givenbandwidth.

[0271] Spectrum Analyzer Statistics Data. This data provides astatistical analysis of the data in RF power vs. frequency measurements.

[0272] Pulse Event Data—This data describes characteristics onindividual RF pulses detected by the SAGE 10. The characteristics for(and thus the types of pulses) detected by the SAGE 10 can beconfigured.

[0273] Pulse Histogram Data. This data describes the distribution ofpulses per unit of time, in terms of the percentage of pulsesdistributed among different frequencies, energy levels, and bandwidths.

[0274] Snapshot Data. This data contain portions of raw digital data ofthe RF spectrum captured by the snapshot buffer of the SAGE 10. The datacan help identify the location of devices, and can also be used toextract identifier information which can determine the brand of certaindevices operating in the frequency band, for example. Snapshot data mayalso be useful for signal classification.

[0275] The classification engine 5120 may perform spectrum analysisfunctions to determine and classify the types of signals occurring inthe frequency band, and together with optional recommendation ordescriptive information that may be provided by the classificationengine or spectrum expert 5140, the resulting data that is returned arecalled spectrum event data, which describe specific events, such asdetecting a particular signal type as going active or inactive in thefrequency band. The spectrum expert 5140, as well as the network expert5120 and other applications or processes may use the output of theclassification engine 5120.

[0276] There are numerous ways to format the NSI messages to provide thedesired API functionality in connection with the spectrum analysisfunctions. The following are examples of message formats that areprovided for the sake of completeness, but it should be understood thatother API message formats may be used to provide the same type ofinterface between an application program and spectrum analysis functionspertaining to activity in a frequency band where signals of multipletypes may be simultaneously occurring.

[0277] A common message header may be used by both session controlmessages and information messages. The common header, called thesm1StdHdr_t header, comes at the very beginning of all messages andprovides certain general identifying information for the message. Anexample of the general format of the common header is explained in thetable below. Sub-Field Description and Notes msgLen ‘msgLen’ is thelength of the message in bytes. msgType ‘msgType’ is an integer whichindicates whether this is a sessType Start Test message, a data message,etc. ‘sessType’ is an integer which indicates the type of test, such asa pulse test, or an spectrum analyzer test. configToken This value isset by the user (the requesting application program also called theNetwork Management Software) when a test is set up. The purpose is tohelp the requesting application program distinguish incoming data basedon different test configurations. timestampSecs Use of the time stamp ismessage dependent. Src ‘src’ and ‘dest’ fields are intended tofacilitate Dest multiplexing of session routing across common transportconnections, where needed.

[0278] Informational messages are started with two headers: the commonheader (sm1StdHdr_t), followed by the Info Header (sm1InfoHdr_t). Thesm1InfoHdr_t header provides specific identifying parameters forinformation messages: Sub-Field Name Description and NotestransactionSeq Sequence for this message. This starts at 1, and isincremented for each succeeding message. The increment reflects thenumber of data samples (transactionCnt) in the previous messages. Forsome types of messages the number of data points, and hence thetransactionCnt, is fixed at ‘1’; for these message types successivemessages always have their transactionSeq incremented by ‘1’.transactionCnt ‘transactionCnt’ generally indicates the number ofentries in a message, where entries are discrete units of data. Its useis message dependent. For example, for Power vs. Frequency spectrummessages, this value indicates the number of sequential “snapshots” ofthe RF spectrum in the message. (Each snapshot is encapsulated in aspecific sequence of bytes. If the transactionCnt has a value of 10,then the message contains 10 successive snapshots of the RF spectrum;there are ten matching byte patterns which follow, each of which reportson one snapshot of the RF spectrum.)

[0279] A summary of all the messages that may be sent via the NSI iscontained in the table below. The numeric values in the table belowcorrespond to the values that are used in the msgType sub-field of thesm1StdHrd_t field. msgType msgType Name Value Direction MeaningSESS_START_REQ 40 User→ Start a service, or NSI copying a service.SESS_STARTED_RSP 41 NSI→ Test started. User SESS_PENDING_RSP 42 NSI→Session will start User when the service is freed up from another user.SESS_REJECT_RSP 43 NSI→ Session could not be User started. SESS_STOP_REQ44 User→ Request to stop the NSI service. SESS_STOPPED_RSP 45 NSI→Service stopped, User either in response to user request or due toproblems. SM_MSG_L1_INFO 46 NSI→ Informational User message containingtest data. SESS_QUERY_REQ 47 User→ Requests the current NSI testconfiguration. SESS_QUERY_RSP 48 NSI→ Current test User configuration.SESS_POLL_REQ 49 User→ Requests a poll, or NSI flushing, of pulsehistogram test data. SESS_POLL_RSP 50 NSI→ Pulse histogram test Userdata. SESS_RECONFIG_REQ 51 User→ Reconfigure a test NSI session.SESS_RECONFIG_RSP 52 NSI→ Response to User reconfiguration request.SESS_VENDOR_REQ 52 User→ Vendor-defined NSI request. SESS_VENDOR_RSP 53NSI→ Vendor-defined User response.

[0280] Examples of informational messages, which as suggested above, areNSI formatted versions of the output of the measurement engine 5100 andclassification engine 5120, and optionally the spectrum expert 5140, aredescribed.

[0281] Spectrum Analyzer Power vs. Frequency Data

[0282] The SAGE 10 will analyze a frequency band centered at a frequencywhich may be controlled. Moreover, the bandwidth of the frequency bandanalyzed may be controlled. For example, a portion, such as 20 MHz(narrowband mode), of an entire frequency band may be analyzed, orsubstantially an entire frequency band may be analyzed, such as 100 MHz(wideband mode). The selected frequency band, is divided into aplurality of frequency “bins” (e.g., 256 bins), or adjacent frequencysub-bands. For each bin, and for each sample time interval, a report ismade from the output of the SAGE 10 on the power detected within thatbin as measured in dBm. The measurement engine 5100 supplies theconfiguration parameters to the SAGE drivers 15 and accumulates theoutput of the SAGE 10 (FIG. 1).

[0283]FIG. 24 (also described further hereinafter) illustrates a graphthat may be created from power measurements taken at a given timeinterval. In the illustration, the vertical bars do not represent thedistinct frequency bins. Of the two jagged lines shown in FIG. 24, thelower line represents a direct graph of the data in a single snapshot ofthe spectrum at a given instant in time. It corresponds to the data inone, single sapfListEntries field, described below. However, a spectrumanalysis message may contain multiple sapfListEntries fields; each suchfield corresponding to a single snapshot of the spectrum. The upperjagged line was constructed by a software application. It represents thepeak values seen in the RF spectrum over the entire testing period tothe present instant.

[0284] An example of the structure of the spectrum analyzer power vs.frequency data is as follows. Primary Field Names Description and Notessm1StdHdr_t Standard header. sm1InfoHdr_t The second standard header.sm1SapfMsgHdr_t Describes the frequency band being analyzed, providingboth the center frequency and the width of the each of the 256 bins.sapfListEntries This fields contains the primary data of interest, thatis, the RF signal power in dBm for each of the 256 frequency bins. Theremay be only a single instance of this field in the message, or there maybe multiple instances. If there is more than one such field, each fieldcorresponds to a single snapshot in a time- series of snapshots of theRF spectrum. The number of instances is given by the sm1InfoHdr_t.transactionCnt sub-field.

[0285] In the second standard header, the msgType is 46 to identify themessage as an informational message, and the sessType is 10(SM_L1_SESS_SAPF) to identify that data results from a session that is aspectrum analyzer power vs. frequency test.

[0286] The field below is the standard information header for spectrumanalyzer power vs. frequency data. Sub-Field Name Description and NotestransactionSeq Sequence for this message. This starts at 1 for the firstmessage. For each subsequent message, it is incremented by the value oftransactionCnt in the previous message. transactionCnt Number ofsapfList entries in message (sapfList). In other words, this is thenumber of sequential “snapshots” of the RF spectrum in the message.

[0287] This field sm1SapfMsgHdr_t below describes the frequency spectrumthat is being monitored. While this message provides the centerfrequency and the width of the bins, it may not provide the totalbandwidth being measured. This can be calculated (lowend=frqCenterkHz−128*binSize, high end=frqCenterkHz+128*binSize. Theradio receiver being used to monitor the bandwidth need not actuallyspan the full bandwidth. As a result, some of the frequency bins ateither end of the spectrum will typically show zero (0) RF power.Sub-Field Name Description and Notes frqCenterkHz Center Frequency ofthe power vs. frequency lists in kHz. binSizekHz Size of bins in kHz

[0288] For a single snapshot of the RF spectrum at a moment in time, thesapfListEntries field explained below contains the information ofprimary interest, namely, the power level in dBm for each of thefrequency bins. Sub-Field Name Description and Notes timestampSecsTimestamp seconds, and fractional portion of timestampmicrosecstimestamp in μseconds. The time is counted from the beginning of thetest, not from some absolute time (i.e., not like in the UNIX operatingsystem). powerValuesdBm Bins (−128 to 127) dBm power values. The valuereflects the energy that the radio receiver “sees” in the portion of thefrequency spectrum corresponding to this bin.

[0289] The frequency range corresponding to bin “N”, where N goes from 0to 255, is given by: $\begin{matrix}{{{LowFrequency}\lbrack N\rbrack} = {{{sm1SapfMsgHdr\_ t}.{frqCenterkHz}} +}} \\{{\left( {N - 128} \right)*{{sm1SapfMsgHdr\_ t}.{binSizekHz}}}} \\{{{HighFrequency}\lbrack N\rbrack} = {{{sm1SapfMsgHdr\_ t}.{frqCenterkHz}} +}} \\{{\left( {N - 127} \right)*{{sm1SapfMsgHdr\_ t}.{binSizekHz}}}}\end{matrix}$

[0290] Spectrum Analyzer Statistics Data

[0291] The spectrum analyzer statistics data/messages provide astatistical analysis of the data in the frequency spectrum.

[0292] A single message is built from a specified number of FFT cycles,where a single FFT cycle represents an, e.g., 256 frequency bin outputof the FFT. For example, 40,000 successive FFTs of the RF spectrum,taken over a total time of {fraction (1/10)} of a second, are used toconstruct the statistics for a single message.

[0293]FIG. 25 shows the kind of information that can be conveyed in thespectrum analyzer statistics data. The bottom line shows the averagepower over the sampling period (i.e., over the 40,000 FFTs, or {fraction(1/10)} second). The top line represents the “absolute maximum power”over all spectrum analyzer statistics messages received so far.

[0294] An example of the overall structure of the spectrum analyzerstatistics data is: Field Name Description and Notes sm1StdHdr_t msgType= 46 (SM_MSG_L1_INFO) sessType = 11 (SM_L1_SESS_SASTATS) sm1InfoHdr_t Nospecial fields sm1SaStatsMsgHdr_t This field contains general parametersabout the statistical sampling process. See format below. statsBins 256Spectrum Analysis Stats Bins. See discussion. activeBins 10 bins foractive peaks. See discussion. quality A number from 0 to 100 indicatingthe quality of the entire band. 0 is the worst, 100 is the best. Values0-33 indicate “POOR”, 34-66 indicates “GOOD” and 67-100 indicatesEXCELLENT.

[0295] This message header sm1SaStatsMsgHdr_t field contains parameterswhich describe the sampling process, examples of which are below.Sub-Field Name Description and Notes bwkHz The bandwidth (narrow/wide)for the statistical analysis of the RF spectrum in kHz. Narrowband isapproximately 20 MHz, and wideband is approximately 100 MHz. cycleCntThe number of FFT cycles accumulated into the statistics. This is userconfigurable, but is typically in the range of 20,000 to 40,000.startTimeSecs Start timestamp in seconds, and start timestamp,startTimeUsecs fractional portion, in μseconds, for the current message,indicating when measurements for the current set of statistics began.Measured from when the test started running. endTimeSecs End timestampin seconds, and end timestamp, endTimeUsecs fractional portion, inμseconds, for the current message, indicating when measurements for thecurrent set of statistics finished. Measured from when the test startedrunning. centerFreqkHz Center Frequency in kHz. User configurable.pwrThreshDbm dBm of the current power threshold used for duty cycle andactive bins information. This represents the minimum power the RFspectrum must have to be counted in the duty cycle and active binstatistics (these statistics are discussed further below). noiseFloorDbmdBm value of the current noise floor.

[0296] There are, for example, 256 consecutive statsBins, each with foursub-fields as shown in the table below. Each statsBin, with its foursubfields, contains the statistical data for a particular bandwidth. Tocalculate the width of each frequency bin, the following formula may beused:

binWidth=sm1SaStatsMsgHdr_t. bwkHz /256

[0297] The lower and upper bandwidth for each bin is giving by thefollowing formulas:

LowBandwidth[N]=sm1SaStatsMsgHdr_t. centerFreqkHz+((N−128)*binWidth)

HighBandwidth[N]=sm1SaStatsMsgHdr_t. centerFreqkHz+((N−127)*binWidth)

[0298] Sub-Field Name Description and Notes avgDbm[0] Average dBm powerlevel (−128 to 127 dBm) for this frequency bin. maxDbm[0] Maximum dBmpower level (−128 to 127 dBm) for this frequency bin. dutyPercent[0] Thepercentage of time, multiplied by 2, that the power level for this binremained above a (user-defined) threshold. avgDbm[1] Average dBm powerlevel (−128 to 127 dBm) for this frequency bin. maxDbm[1] Max dBm powerlevel (−128 to 127 dBm) for this frequency bin. dutyPercent[1] Thepercentage of time, multiplied by 2, that the power level for this binremained above a (user-defined) threshold. avgDbm[N] Average dBm powerlevel (−128 to 127 dBm) maxDbm[N] Max dBm power level (−128 to 127 dBm)dutyPercent[N] Percentage X 2 that power remained above threshold.avgDbm[255] Average dBm power level (−128 to 127 dBm) maxDbm[255] MaxdBm power level (−128 to 127 dBm) dutyPercent[255] Percentage X 2 thatpower remained above threshold.

[0299] There are ten consecutive activeBins which record “peak”activity. The bins may be viewed as being indexed consecutively, from 0to 9. For each bin, the value in the bin should be interpreted asfollows. In the Nth bin, if the value in the bin is X, then for (X/2)%of the time, there were N peaks in the RF spectrum during the samplingperiod, except for the special case below for the 10th bin, called bin9. Sub-Field Name Description and Notes activeBins[0] If the value inthis bin is X, then (X/2)% of the time, there were no peaks (0 peaks) inthe RF spectrum. activeBins[1] If the value in this bin is X, then(X/2)% of the time, there was 1 peak in the RF spectrum. activeBins[2]If the value in this bin is X, then (X/2)% of the time, there were 2peaks in the RF spectrum. activeBins[8] If the value in this bin is X,then (X/2)% of the time, there were 8 peaks in the RF spectrum.activeBins[9] If the value in this bin is X, then (X/2)% of the time,there were 9 or more peaks in the RF spectrum.

[0300] As described above in conjunction with the SAGE 10, peaks arespikes, or very brief energy bursts in the RF spectrum. If a burstpersists for a certain period of time (e.g., approximately 2.5 μsec),the SAGE 10 will detect the peak, and the peak will be included in thestatistics described in this subsection. Such brief peaks are generallynot included in pulse data or pulse statistics. Also as described above,if a series of consecutive peaks are seen over a continuous time period,all at the same frequency, this series—once it reaches some minimum timethreshold—it will be counted as a pulse. FIG. 25 also shows how thenumber of peaks may be displayed associated with activity in thefrequency band.

[0301] The exact minimum duration of a pulse, for testing purposes, isconfigurable by the application program, but a typical time may be 100μsec. Since the SAGE 10 can detect RF events as brief as 2.5 μsec, atypical pulse would need to persist through at least 40 FFTs beforebeing acknowledged as being a pulse.

[0302] Pulse Event Data

[0303] A signal pulse is a sustained emission of RF energy in a specificbandwidth starting at a specific time. The SAGE 10 detects pulses in theradio frequency band that satisfy certain configurable characteristics(e.g., ranges) for bandwidth, center frequency, duration and timebetween pulses (also referred to as “pulse gap”). When the SAGE 10detects a pulse that has these characteristics, it outputs pulse eventdata for the pulse including:

[0304] Start Time—Measured from when the SAGE first begins detectingpulses.

[0305] Duration—The lifetime of the pulse.

[0306] Center Frequency—The center frequency of the pulse.

[0307] Bandwidth—How wide the pulse is.

[0308] Power—Average power in dBm.

[0309] The overall structure of a pulse event (PEVT) data/message isshown in the table below. Field Name Description and Notes sm1StdHdr_tmsgType = 46 (SM_MSG_L1_INFO) sessType = 12 (SM_L1_SESS_PEVT)sm1InfoHdr_t transactionCnt = number of PEVTs in message; each PEVTcontains data on one pulse. classPevts sm1Pevts: an array of‘transactionCnt’ PEVTs of the form ‘sm1Pevt_t’ shown below. Each fieldcontains data on one pulse

[0310] This information header field is the standard information headerfor pulse event messages. Sub-Field Name Description and NotestransactionSeq Sequence for this message. This begins with 1 for thefirst message. For each successive message, it is incremented by thetransactionCnt in the previous message. (In other words, it isincremented by the number of pulses reported on in the previousmessage.) transactionCnt Number of PEVTs in this message (Pevts). EachPEVT field corresponds to one pulse.

[0311] There may be one or many pulse events in the message. Eachinstance of the classPevts field below, describes the properties of onepulse. Sub-Field Name Description and Notes sdId This indicates which of4 internal pulse detectors are being used by SAGE to detect this pulse.termCodeFlags This byte contains a series of flags which indicate howthe pulse was terminated. dBm Pulse power in dBm. frqCenterkHz CenterFrequency of the pulse in kHz. The value shown will typically range from0 to 100,000 kHz. To obtain the actual center frequency, add this valueto the low end of the frequency spectrum being tested. Example: If thefrequency spectrum being tested ranges from 2,350,000 kHz to 2,450,000kHz, and the frqCenterkHz value is 40,000 kHz, then the actual centerfrequency of the pulse is approximately 2,390,000 kHz. Note: Actualresolution is ±200 to 500 kHz. bandwidthkHz Bandwidth of the pulse inkHz. Note: Actual resolution is ±200 to 500 kHz. durationUs PulseDuration in μseconds timeOnSecs Pulse Time On, seconds portion; andPulse Time On, timeOnUsecs fractional portion in μseconds. The time thepulse began is measured from when the test started running, not fromsomeone absolute, fixed date.

[0312] Pulse Histogram Data

[0313] While it is possible to access information about individualpulses, it may also be useful to work with the statistical informationabout pulses detected and occurring in the frequency band over time.That information is provided by pulse histogram data. The pulsehistograms track distributions of: duration of the pulses (thepercentage of pulses with short, medium, and long durations); gaps intime between the pulses (the percentage of pulses with short time gapsbetween them, medium time gaps, and long time gaps); bandwidth ofpulses; frequency of pulses; and power of pulses.

[0314]FIG. 26 illustrates graphical displays for exemplary pulsehistograms.

[0315] The overall structure of the pulse histogram data is shown in thefollowing table. Field Name Description and Notes sm1StdHdr_t msgType =46 (SM MSG_L1_INFO) sessType = 13 (SM_L1_SESS_CLASS) sm1InfoHdr_t nospecial fields sm1PhistMsgHdr_t Provides detailed information about thesampling process. pulseDurationHistogram Pulse Duration HistogrampulseGapHistogram Pulse Gap Histogram pulseBandwidthHistogram PulseBandwidth Histogram centerFreqHistogram Center Frequency HistogrampowerHistogram Power Histogram

[0316] This PhistMsgHdr field describes the frequency spectrum which isbeing monitored, and some other parameters of the overall samplingprocess. Sub-Field Name Description and Notes classMsgTypeSM1_CLASS_PHIST_MSG = = 1, (Pulse Histogram Msg) numSampleIntervalsNumber of sample intervals. If a dedicated radio receiver is continuallylistening for pulses, this value will be 1 (indicating a single samplinginterval). If the radio device is doubling as a transmitter, then itcannot listen all the time; this parameter will indicate the number oftimes the radio device was actually able to listen for pulses.avgSampleDurationMs Average sample time size in msec. If a dedicatedradio device is continually listening for pulses, this value will be thesame as the amount of time the SAGE 10 has been instructed to listen forpulses before sending statistical data. If the listening device cannotlisten all the time, then multiply: TALT = avgSampleDurationMs *numSampleIntervals to obtain the total actual listening time (TALT). Toobtain the fraction of listening time, divide the TALT by the amount oftime the CLP has been instructed to listen for pulses before sendingstatistical data. [The total listening time can also be calculated fromthe fields below: endTimeSecs + endTimeUsecs − (startTimeSecs +startTimeUsecs)] histBwkHz Histogram bandwidth in kHz histCenterFreqkHzHistogram Radio Center frequency in kHz startTimeSecs Start timestampseconds, and start timestamp, startTimeUsecs fractional portion inmicroseconds. This is measured from when the pulse histogram operationwas initiated, not from some absolute starting time (i.e., not like inthe UNIX operating system). endTimeSecs End timestamp seconds, and endtimestamp, endTimeUsecs fractional portion in microseconds. Again, thisis measured from when the pulse histogram operation was initiated.numPulseEvents Number of pulse events recorded for this histogram.

[0317] The pulse duration histogram fields contain a series of bytes.Each of the data bytes, or bins—in sequence—indicates the percentage(multiplied by two) of pulses that fall into a given range of durations.The table below categorizes data into smallBins, mediumBins, andlargeBins and are only examples of how to track pulse duration.

[0318] The first bin (bin 0) contains the percentage (×2) of pulses thatwere between 0 μsec and 9 μsec. The second bin (bin 1) contains thepercentage, multiplied by 2, of pulses that were between 10 μsec and 19μsec in duration. Each of these “bins” is 10 μsec wide. This continuesup to the 20th bin (bin 19), whose value is the percentage, multipliedtimes 2, of pulses that were between 190 and 199 μsec in length.

[0319] The next twenty-six bins are similar, except they are wider;specifically, they are 50 μsec wide. Bin 20 has a value which indicatesthe percentage (×2) of pulses that were between 200 μsec and 249 μsec inlength. Again, there are twenty-six bins which are 50 μsec wide. Binnumber 45 has a value which indicates the percentage (times 2) of pulsesthat were between 1450 μsec and 1499 μsec in length.

[0320] The final set of 27 bins each indicate the percentage (×2) ofpulses that are wider still, specifically 500 μsec wide. Bin number 46includes pulses whose duration was between 1500 μsec and 1999 μsec inlength. Bin 72 includes pulses whose duration was between 14499 and14999 μsec.

[0321] Pulse Duration Histogram Bins Sub-Field Name Description andNotes smallBins Each bin contains the percentage (x2) of pulses thatfell within a 10 μsec range. The range starts with 0 μsec to 9 μsec, andincreases by 10 μsec for each consecutive byte. The final bin (binnumber 19) covers pulses with widths between 190 to 199 μsec. mediumBinsEach bin contains the percentage (x2) of pulses that fell within a 50μsec range. The range starts with 200 μsec to 249 μsec, and increases by50 μsec for each consecutive bin. The final bin-which is the 26th bin ofthe mediumBins, the 46th bin overall, and is numbered as bin 45-coverspulses with widths between 1450 to 1499 μsec. largeBins Each bincontains the percentage (x2) of pulses that fell within a 500 μsecrange. The range starts with 1500 μsec to 1999 μsec, and increases by5000 μsec for each consecutive bin. The 73rd bin (which is numbered asbin 72) covers pulses with widths between 14499 to 14999 μsec.

[0322] The pulse gap histogram indicates the percentage (multiplied bytwo) of gaps between pulses, where the duration of the gap falls withina given time range. The bins do not reflect when the gaps occurred, theyreflect how long the gaps were. Gaps are measured between the start ofone pulse and the start of the next. This is because the start of apulse tends to be sharply delineated, while a pulse may trail off moregradually. For example, assume there were a total of twenty gaps betweenpulses. Of these twenty, only two gaps had a duration between 10 μsecand 19 μsec. The first gap, which lasted 12 μsec, occurred at time15.324 seconds. The second gap, which lasted 15 μsec, occurred at time200.758 seconds. Both gaps are recorded in the second bin (numbered asbin 1). Since the two gaps reflect 10% of all recorded gaps, the valuein the second bin (bin 1) will be 2×10%=20 (since all percentages aremultiplied by two).

[0323] Pulse Gap Histogram Bins Sub-Field Name Description and NotessmallBins Each consecutive bin contains the percentage (x2) of gapsbetween pulses, where the length of the gap fell within a 10 μsec range.The range starts with gaps that are 0 μsec to 9 μsec long, and increasesby 10 μsec for each consecutive byte. The 20th and final bin (bin number19) covers gaps whose duration was between 190 to 199 μsec. mediumBinsEach bin contains the percentage (x2) of gaps whose duration fell withina 50 μsec range. The range starts with 200 μsec to 249 μsec (so all gapswhose duration is within this range are included in this first bin,number 20), and increases by 50 μsec for each consecutive bin. The finalbin-which is the 26th bin of the mediumBins, the 46th bin overall, andis numbered as bin 45-covers gaps whose duration was between 1450 to1499 μsec. largeBins Each bin contains the percentage (x2) of gaps whoseduration fell within a 500 μsec range. Gaps whose duration was between2500 μsec to 2999 μsec are reflected in the first bin; each consecutivebin increases the duration by 5000 μsec. The final bin-which is the 27thbin of the largeBins, the 73rd bin overall, numbered as bin 72-coversgaps with widths between 14499 to 14999 μsec.

[0324] For the pulse bandwidth histogram, each data bin reflects aprogressively wider bandwidth. For example, if the first bin representspulses from 0 to 9.999 kHz in width, then the second bin representspulses from 10 kHz to 19.999 kHz, the third bin pulses from 20 kHz to29.999 kHz in width, etc. The value stored in the bin is the percentage(×2) of the pulses that had a bandwidth somewhere within the indicatedrange. For example, assume the size of each bin is 80 kHz. Suppose alsothat the SAGE 10 detected 1000 pulses and there are 256 frequency bins.The pulses with a bandwidth between 0 and 20,480 kHz. As anotherexample, assume the SAGE 10 detects 65 pulses, each of which had abandwidth somewhere between 400 and 480 kHz. Then, 6.5% of the pulsesfall within the sixth bandwidth range, so the 6th bin (bin number 5)will have a value of 2×6.5%=13.

[0325] The bandwidth bins may have exactly the same width. For example,if the first bin is 80 kHz wide (and includes data for pulses withbandwidths from 0 to 15 79.999 kHz), then all successive bins will be 80kHz wide. The second bin includes pulses from 80 kHz to 159.999 kHz; andthe 256th bin—still 80 kHz wide—includes pulses with bandwidths from20,400 kHz to 20,479.999 kHz.

[0326] Pulse Bandwidth Histogram Bins Sub-Field Name Description andNotes binSizekHz Size of bin in kHz. numBinsUsed N, for example 256.freqBins The percentage (x2) of pulses which have a bandwidthcorresponding to the bandwidth of this byte. The first byte (byte 0)represents pulse bandwidths from 0 to binSizekHz. The second byte(byte 1) represents pulse bandwidths from binSizekHz to 2 x binSizekHz.(So byte 1 contains the % * 2 of pulses whose bandwidth fell within thisrange.) In general, the N^(th) bin represents pulses with bandwidthsbetween (N − 1) * binSizekHz, and N * binSizekHz. Again, the value ofthe byte represents the % * 2 of pulses whose bandwidths fell withinthis range.

[0327] For the pulse center frequency histogram, each data bin reflectsa range of frequencies. The value stored in the bin is the percentage,multiplied times two, of the pulses whose center frequency fell withinthe indicated range of frequencies.

[0328] All frequency bins may be exactly the same width. However, ingeneral, the lowest bin (byte number 0) does not start with thefrequency 0 Hz. Recall that the pulse histogram message header(PhistMsgHdr_t) has a sub-field histCenterFreqkHz, which is measure inkHz. This field defines the center frequency for the pulse centerfrequency histogram.

[0329] The following formulae give the actual frequency range covered byeach bin of this histogram, indicating both the low frequency and thehigh frequency of the range. The number N is the bin number, where binnumbers are counted from freqBins 0 to freqBins 255:

Low Frequ. (bin N)=histCenterFreqkHz−(128*binSizekHz)+(N*binSizekHz)

High Frequ. (bin N)histCenterFreqkHz−(128*binSizekHz)+((N+1)*binSizekHz))

[0330] Suppose the size of each bin, in kHz, is 100 kHz, and that thebandwidth is 2.4 GHz. Frequencies are actually being monitored in therange from 2,387,200 kHz to 2,412,800 kHz.. Suppose also that SAGE 10detected 1000 pulses, and 80 pulses with center frequencies in the rangefrom 2,387,600 kHz to 2,387,699 kHz. Then 8% of the pulses fall withinthe fifth bandwidth range, so bin 4 will have a value of 2×8%=16.

[0331] The field structure for the pulse center frequency histogram isindicated in the table below.

[0332] Pulse Center Frequency Histogram Bins Sub-Field Name Descriptionand Notes binSizekHz Size of bin in kHz, numBinsUsed N, for example 256.freqBins The percentage (x2) of pulses that have a central frequencycorresponding to this byte.

[0333] For the pulse power histogram, each bin reflects a certain powerrange, measured in dBm. The value of each bin reflects the percentage(×2) of those pulses whose power level fell within the indicated range.

[0334] Pulse Power Histogram Bins Sub-Field Name Description and NotespowerBins Each bin indicates the % (x2) of those pulses which fellwithin the bin's designated power range. The range of each bin is 5 dBm,and the lower power of the lowest bin is −130 dBm. Therefore: bin[0] =−130 to −126 dBm bin[1] = −125 to −121 dBm bin[2] = −120 to −116 dBm . .. bin[N] = −130 + (N * 5) to −126 + (N * 5) . . . bin[29] = +15 to +19dBm

[0335] Snapshot Data

[0336] Snapshot data, unlike other data provided by the NSI, is notbased on data analysis by the SAGE or software. Rather, this dataprovide raw data from the ADC which precedes the SAGE and that convertsthe received signal analog signal to digital data.

[0337] The raw ADC data may be expressed in n-bit I/Q format, where ‘n’is indicated by ‘bitsPerSample’. The snapshot samples can be used forlocation measurements, or for detailed pulse classification (such asidentifying the exact model of a device). The size of the sample datacontained in ‘snapshotSamples’ is typically 8 K bytes. The overallstructure of the message is shown in the following table. Field NameDescription and Notes sm1StdHdr_t msgType = 46 (SM_MSG_L1_INFO) sessType= 17 (SM_L1_SESS_SNAP) sm1InfoHdr_t transactionCnt = 1 smSnapshotMsg_tSnapshot message body. K is 24 + ‘snapshotSamplesLen’

[0338] An example of a snapshot message smSnapshotMsg_t field is definedbelow. Sub-Field Name Description and Notes snapshotStartSecs TARGETsnapshot time in seconds snapshotStartNanosecs TARGET snapshot time innanoseconds. numberOfSamples Number of IQ Snapshot Samples bitsPerSampleNumber of bits in a sample radioGainDb Radio gain in dB: −127 to 128 dBThis is the radio gain used at the start of the sample interval. It maybe used to convert the raw IQ samples into corresponding dBm powerlevels. pulseDetectorId Pulse Detector ID. Value of 0xFF indicates thata Pulse Detector was NOT used to trigger sampling. reserved Reserved forfuture expansion snapshotSamplesLen Number of bytes (N) in the‘snapshotSamples’ field below. snapshotSamples Sample data. The size ofthis snapshotSamples is typically 8 k Bytes. Size N is the value in‘snapshotSamplesLen’.

[0339] Spectrum Event Data

[0340] The msgType for spectrum event data is 46 and the sessType is 14(SM_L1_SESS_EVENT). A format for the smEventMsg_t spectrum event messagefield is described in the table below. Sub-Field Name Description andNotes EventType Character string. Up to 16 characters, null terminated.Some typical examples of event types are: “Information”,“Identification”, “Interferer”, “Error”. EventDateTime Number of secondspast an arbitrary date, e.g., Jan. 1, 1970 when smEventMsg was received.This field is essentially a placeholder; the value must be filled in bythe receiving application. 0 is sent by the target. Displayed ashh:mm:ss mm/dd/yyyy. EventTimestampSecs TARGET event timestamp inseconds. Times are measured from when the monitoring began of theenvironment, not from some absolute calendar time. EventTimestampUsecsTARGET fractional portion of timestamp in microseconds. Times aremeasured from when the monitoring began of the environment, not fromsome absolute calendar time EventId Specific ID numbers are assigned tospecific types of events. For example, a microwave oven startup may be‘1’, a Bluetooth device may be ‘2’, a cordless phone may be ‘3’, etc.For “Interferer” event messages, the following format applies: LowAddress Byte High Address Byte 16 High Bits- 15 Bits- 1-Bit: ReservedDevice ID On/Off The Device ID must be combined with the On/Off bit toobtain the actual numeric value of the field. For example, if the DeviceID for a Bluetooth ™ device is ‘2’, the fifteen-bit pattern is ‘00000000 0000 010’. But with the On/Off bit appended to the right, the bitpattern becomes: ‘0000 0000 0000 0101’ = Decimal 5 (device on), or ‘00000000 0000 0100’ = Decimal 4 (device off). EventSourceId Identifies thetarget source. This parameter is only significant when more than onesource (for example, more than one AP) is feeding data to the requestingsoftware or system. AlertLevel Warning Levels for Messages SuggestedDisplay Value Severity Colors 1 Severe Red 2 High Orange 3 ElevatedYellow 4 Guarded Blue 5 Low Green EventMsg This is a brief characterstring message, null terminated, which identifies the event that causedthe message. For example, it may say “Microwave oven has started”, or“Cordless phone”. The content of the message is essentially redundantwith the EventId (above), except that it provides text instead of anumeric identifier. EventDescription The event description willtypically contain more detailed information, and will often includeadvisory and/or recommendation information as to how to resolveinterference or other situation caused by the event source. EventDetailThe event detail will generally include pertinent technical parameters,such as power levels or frequency bandwidth associated with the event.Newline characters delimit individual lines.

[0341] Software and systems communicate requests to the NSI for datafrom the services on the other side of the NSI using the session controlmessages referred to above. An example of the format of the sessioncontrol messages is as follows. There is a standard header followed byinformation elements. An information element is a data structure withseveral parts, as described in the following table: Field NameDescription infoElementLen Number of bytes in this information element,including this length field. infoElementType Information element typenumber. This type is used to distinguish the information element. Thetypes are UNIQUE across ALL messages. Ex: An ‘infoElementType’ of ‘1’indicates “Reject Reason”, and has a particular meaning independent ofthe ‘sm1StdHdr_t.msgType’ field. infoElementBody This contains thesignificant data of the information element, and may have one or moresub-fields. The information element body. The format of the data isdetermined by the infoElementType field.

[0342] Typical information elements provide data such as the SAGEconfiguration data, radio configuration data, and service specific data(e.g., pulse data, spectrum data, etc.). Examples of NSI informationelements are provided in the table below: Information ElementinfoElementType Name (decimal) Description IE_RETURN_CODE 1 Activitycompletion status return code information IE_SESSION_CFG 2 Sessionpriority and startup configuration IE_SAGE_CFG 3 Common SAGE Configeffecting multiple services IE_RADIO_CFG 4 Common radio configura- tionIE_COPY_CFG 5 Request copy of any data for that service, with optionalnotification of configuration updates. IE_SAPF_CFG 6 Spectrum AnalyzerPower vs. Frequency configuration IE_PD_CFG 7 Pulse DetectorConfiguration IE_SA_STATS_CFG 8 Spectrum Analyzer Stats configurationIE_PHIST_CFG 9 Configuration of PHIST service IE_PEVT_CFG 10Configuration of PEVT service IE_SNAP_CFG 12 Snapshot Bufferconfiguration IE_VENDOR_CFG 13 Vendor specific configurationinformation. IE_FLOW_CTRL 15 INFO Message Flow Control IE_VERSION 16Version of NSI being used.

[0343] There is an advantage to using information elements in NSIsession control messages. The format of session control messages can bemodified or expanded over time, as technology is further developed,while requiring no revisions to existing software or systems that usethe NSI. In other words, enhancements to the messages do not breaklegacy code.

[0344] In traditional software design, the network management softwarewould be coded with the expectation of specific data structures for eachof the session control messages. Any time the session control messageswere changed or enhanced, changes would be required in the code for thenetwork management software, and the code would need to be recompiled.

[0345] With session control messages, however, this is no longernecessary. Session control messages are processed as follows.

[0346] 1. The requesting software or system reads the message header,and determines what kind of message it is receiving.

[0347] 2. Software developers know what kinds of information elementswill follow the header field based on a specification document. Designdecisions are made to determine what kinds of actions the software orsystem will take in response to those information elements.

[0348] 3. In the code itself, after reading the header field, thesoftware loops through information elements which follow. Only forinformation elements of interest—which can by flagged by theinfoElementType field in each information element—the software takesappropriate action.

[0349] Additional information elements may be added to some of thesession control messages. However, during the “looping” process therequesting software ignores any information elements which are not ofinterest to it, so the additional information elements in the controlmessages do not require any changes in the software code. Of course, itmay be desirable to upgrade a software program to take advantage ofadditional types of information; but again, until that new software isin place, existing software continues to function.

[0350] This benefit works in both directions. For example, in sendingmessages to the NSI, the software program can send an informationelement which fine-tunes the behavior of the SAGE. Typically, however,SAGE's default operating modes are satisfactory, and there is no need tomake changes. Rather than having to send an information elementcontaining redundant, default configuration data for SAGE, thisinformation element can simply be omitted.

[0351] A handshaking type protocol may be used to setup, initiate andterminate a session between the application and the NSI. There arenumerous techniques known in the art to provide this function. Forexample, all tests are started by sending a sm1StdHdr_t field.Additional, optional information elements may follow. The NSI respondswith messages indicating that the test has started successfully; that itwas rejected; or that the test is pending (the test is queued behindother requests for the same service). The four possible session controlreply messages are Started, Pending, Rejected, and Stop.

[0352] All Start Messages may have the following structure:

[0353] 1. A required sm1StdHdr_t field with a msgType value ofSESS_START_REQ (40), and a value for sessType to indicate the test to beperformed. This field may come first. For example, to start a pulseevent test, the sessType value of 12 is used, to start a pulse histogramtest, a sessType value of 13 is used, to start a spectrum analyzer powervs. frequency test, a sessType value of 10 is used, etc.

[0354] 2. An optional common session configuration information element.This configures parameters which are of interest for all the possibletests, described below.

[0355] 3. For the Pulse Event test only, an optional information elementto configure the pulse detectors.

[0356] 4. Optional information elements to configure the SAGE and theradio.

[0357] 5. An optional, vendor-specific information element, typically(but not necessarily) related to further configurations to the radio.

[0358] 6. An optional session-type specific information element, withconfiguration information for the particular test (PEVT, PHIST, SAPF,etc.).

[0359] The general/common session configuration element IE_Session_CFGis optional when starting tests, i.e., with SESS_START_REQ. If it is notsent, the default values are used. Sub-Field Name DescriptioninfoElementLen Len = 20 infoElementType IE_SESSION_CFG = 2infoElementBody pendingTimeout- Number of milliseconds before “START”times out. A Ms value of ‘0’ (default) indicates that the START requestshould NOT be queued (that is, no SESS_PENDING_RSP, or session pendingresponse, is allowed). configStopFlags This field has an Offset of 8/36;it has a size of 4 bytes. Sometimes it is desired that the service whichis now being started should later stop if certain other services arereconfigured; the reconfiguration(s) which stops the current service isindicated by these flags: 0x00000000: Do not stop for any reconfig0x00000001: SAGE Config 0x00000002: Radio Config 0x00000004: SAPF Config0x00000008: SA_STATS Config 0x00000010: SNAP Config (Note that there arefour pulse detectors (PDs), numbered 0 through 3.) 0x00000020: PD 0Config 0x00000040: PD 1 Config 0x00000080: PD 2 Config 0x00000100: PD 3Config 0x00000200: PHIST Config 0x00000400: PEVT Config 0x00000800:80211_STATS Config 0x00001000: Vendor Config 0xFFFFFFFF: Use DefaultValue (depends on service type, see sub-table below) 1. These‘configStopFlags’ allow cross-service interdependence. It may seem oddto abort an Spectrum Analyzer vs. Power Frequency (SAPF) session when,say, a PD 0 (pulse detector 0) is reconfigured. However there may becases where the use of the outputs of these sessions are interrelated,particularly for event classification software. 2. If a session attemptsto reconfigure a service to the same values that it already has, theservice is NOT stopped and the reconfiguration is considered“successful”. 3. Flags can be combined. For example, 0x00000003 flagsboth SAGE and Radio Config 4. The default value depends on the servicetype: Service configStopFlags ALL SERVICES SAGE, Radio, Vendor EXCEPT802.11 STATS Configs Spectrum Analyzer SAPF Config (SAPF) SpectrumAnalyzer Stats SA_STATS Config (SA_STATS) Pulse Event (PEVT) PD 0, PD 1,PD 2, PD 3, PEVT Configs Pulse Histogram (PHIST) PD 0, PD 1, PD 2, PD 3,PHIST Configs 802.11 Stat 802.11 Stats, Radio, (80211_STATS) VendorConfigs Snapshot Buffer (SNAP) SNAP Config sessionDurationMs Duration ofsession in ms. 0 (the default) indicates no limit to the duration.sessionPriority 1 = highest, 254 = lowest, 255 (0xFF) requests thedefault session priority.

[0360] The radio is configured to a starting bandwidth (either 2.4 GHzor one of the 5 GHz bands, for example) before the NSI can begin anytesting. Similarly, before many pulse test services can be run, at leastone (if not more) of SAGE's four pulse detectors need to be configuredat least once. These services include Pulse Events, Pulse Histograms,Snapshot Data, and Spectrum Analyzer Power vs. Frequency (but only ifthis test is to be triggered by pulse events). Once the pulse detectorsare configured, they can be left in their initial configuration forsubsequent tests, although the application program can reconfigure them.

[0361] The radio configuration element IE_Radio_CFG is described in thetable below. It is used to fine-tune the performance of the radio. Ifthe information element is not sent as part of the message, the radio isconfigured to the default values. Sub-Field Name DescriptioninfoElementLen Len = 8 infoElementType IE_RADIO_CFG = 4 infoElementBodycfreqkHz Center Frequency in kHz. Ex: 2400000 for 2.4 GHz There is nodefault value for this parameter. The radio must be configured to astarting center frequency by the user before 802.11 communications canbegin (and of course, before the NSI can begin any testing), usingeither this information element or the vendor-specific informationelement. radioBwkHz Radio bandwidth in kHz. Examples: 83000 (83 MHzwideband radio) [default value] 23000 (23 MHz narrow band radio)

[0362] The SAGE configuration information element IE_SAGE_CFG isoptional. It fine-tunes the performance of the SAGE 10. If theinformation element is not sent as part of the message, the SAGE 10 isconfigured to the default values. An example of the SAGE configurationelement is set forth below. Sub-Field Name Description infoElementTypeIE_SAGE_CFG = 3 infoElementBody lpfParm Low Pass Filter Parameter:Parameter Low Pass Filter Value Value 0 1 1 {fraction (1/2 )} 2{fraction (1/4 )} 3 {fraction (1/8 )} 4 {fraction (1/16)} 5 {fraction(1/32)} 6 {fraction (1/64)} 7 {fraction ( 1/128)} 0xFF use defaultsageCfgFlags Flags indicate if custom radioGain, AGC (automatic gaincontrol) config, and/or narrow-band SAGE mode are requested: 0x01:radioGainControl indicated below (in the radioGainControl field) isused. 0x02: agcControl indicated below (in the agcControl field) isused. 0x04: narrow band (20 MHz) SAGE Mode (rather than wideband, or 100MHz, which is the default) Flags correspond to bit settings for thisbyte, so 0x01 is the right-most bit; 0x02 is the second bit from theright; 0x04 is the third bit from the right. Any combination of flagsmay be set. If the corresponding flag is ‘0’ then the default value forthese fields are used. radioGainControl This value is used if thematching bit is set in the sageCfgFlags. agcControl This value is usedif the matching bit is set in the sageCfgFlags. “agc” stands forautomatic gain control.

[0363] The IE_VENDOR_CFG information element contains vendor specificconfiguration information. Typically this is a configuration that isspecific to the particular radio in use. Sub-Field Name DescriptioninfoElementType IE_VENDOR_CFG = 13 vendorInfo Vendor specificinformation. Format defined by Vendor.

[0364] The NSI provides a pulse detector configuration element(IE_PD_CFG) which is used to configure the pulse detectors. This elementmust be used the first time the pulse detectors are configured. It isalso used if and when the pulse detectors are reconfigured (which may beinfrequent). The optional pulse events test configuration element(IE_PEVT_CFG) are shown in the table below. If this configurationelement is not sent, the default values are used for the test. Sub-FieldName Description infoElementType IE_PEVT_CFG = 10 maximumNumPevtsMaximum number of Pulse Events in a given PEVT message (Default = 30)pdUsed These bit flags select which Pulse Detector(s) to use: 0x01: PD 0used 0x02: PD 1 used 0x04: PD 2 used 0x08: PD 3 used Flags can becombined to indicate more than one pulse detector. For example, 0x0D(binary 0000 1101) indicates the use of pulse detectors 0, 2, and 3. Avalue of 0xF (binary 0000 1111) indicates to use all detectors (defaultvalue).

[0365] Configuring the pulse detectors involves selecting which pulsedetector(s) to use for a test. It also involves providing parameterswhich indicate the kind of signal pulse (for example, ranges for signalpower, pulse duration, pulse center frequency, etc.) will, in fact, beinterpreted as being a pulse. There are a variety of options whendealing with pulse detectors:

[0366] Use the existing pulse detector configuration for the service.

[0367] Allocate a currently unused detector.

[0368] Reconfigure an existing pulse detector.

[0369] Release a pulse detector so that other sessions may use it.

[0370] Whether configuring a pulse detector before using it for thefirst time, or reconfiguring the detector, the header field will firstbe sent with a particular msgType. This will be followed by the pulsedetector configuration element, IE_PD_CFG, described in the table below.(Other information elements may be included in the message as well.)Pulse detectors are selected using PD_ID sub-field values from 0 to 3.These do not correspond to physical pulse detectors; rather, they are alogical reference to a pulse detector that is used by that transportconnection supporting the sessions. Field Name DescriptioninfoElementType IE_PD_CFG = 7 pdID Session Pulse Detector ID. Values of0 to 3 , for example. configActionType Configuration Action Type: 1:Allocate and configure the pulse detector for use by this session. 2:Reconfigure the existing pulse detector 3: Release the pulse detectorfor others to use. (If value is ‘3’ then the remaining fields areignored). configProfile Configuration Profile: 0: Use the profile fieldsbelow. In other words, use ‘0’ for this field in order to completelydetermine the Pulse Detector configuration, using the remainingparameters in this information element. Any allowed non-zero value(currently 1 for short pulses, and 2 for long pulses): Selects one ofseveral pre-defined configurations, suitable for detecting pulses fromdifferent kinds of sources. In this non-zero case, the remaining fieldsbelow are ignored. bwMinkHz Minimum pulse bandwidth in kHz. bwMaxkHzMaximum pulse bandwidth in kHz. bwHoldkHz Bandwidth hold value in kHz.bwThreshDbm dBm threshold value used to define a pulse. cfreqMinkHzMinimum value of pulse center frequency. Value is number of kHz from thestart of the radio band. cfreqMaxkHz Maximum value of pulse centerfrequency in kHz. cfreqHoldkHz Center Frequency Hold value in kHz.durMinUsecs Minimum Pulse Duration in μseconds. durMaxUsecs MaximumPulse Duration in μseconds. durMaxTermElag Action to be performed onDuration Max: 0: Terminate Pulse with TERMCODE 0 (max duration pulse) 1:Discard Pulse (pulse is ignored) pwrMinDbm dBm value indicating theminimum pulse power. pwrMaxDbm dBm value indicating the maximum pulsepower. pwrHoldDbm power hold value.

[0371] The field bwThreshDbm takes a signed dBm value that helpsdetermine which RF signals will be counted as pulses. A pulse is definedby a series of time-contiguous, and bandwidth continuous “peaks”, orbrief spikes, which determine the overall bandwidth of the pulse (thusthe reference to “bandwidth threshold”). A “peak floor” is establishedto determine which spikes of radio energy qualify as a valid “peak”.Energy spikes below this “peak floor” do not qualify, whereas thoseabove the “peak floor” do qualify. The bwThreshDbm parameter determinesthe “peak floor” based on whether ‘bwThreshDbm’ is positive or negative:

[0372] If bwThreshDbm is negative (ex: −65 dBm), then the peak floor isthe same as the value of bwThreshDbm.

[0373] If bwThreshDbm is positive (ex: 24 dBm), then the peak floor isdetermined dynamically based on the current noise floor:

peak floor dBm=noise floor dBm+bwThreshDbm.

[0374] The noise floor based mechanism (bwThreshDbm is positive) is usedalmost exclusively because it responds well to changes in the radiospectrum environment.

[0375] There may be pre-defined pulse detection configurations, shown inthe table below, to detect certain types of signal pulses. IE_PD_CFGconfigProfile Field Value Profile Name Profile Description/Notes 1ShortPulse1 Captures short pulse frequency hoppers, including Bluetoothheadsets and many cordless phones. 2 LongPulse1 Captures long pulsesoutput by microwave ovens and television transmissions (infant monitors,surveillance cameras, X-10 cameras, etc.).

[0376] This following short pulse profile is suitable for detectingshort pulse frequency hoppers, such as Bluetooth™ headsets and manycordless phones. IE_PD_CFG field Profile field name value Notes bwMinkHz300 Pulse BW from 300 kHz to 4 MHz, bwMaxkHz 4000 with 4.5 MHz holdbwHoldkHz 4500 bwThreshDbm 24 Pulse defined 24 dBm above noise floor.cfreqMinkHz 6000 6 MHz to 94 MHz center frequency, cfreqMaxkHz 94000with 2 MHz hold. cfreqHoldkHz 2000 durMinUsecs 250 Pulse durations from250 to 2000 μs. durMaxUsecs 2000 durMaxTermFlag 1 Discard the pulse ifit is equal to, or longer than, the maximum duration of 2000 μs.pwrMinDbm −85 Pulse power from −85 to 0 dBm, with pwrMaxDbm 0 15 dBhold. pwrHoldDbm 15

[0377] The following long pulse profile is suitable for detecting longpulses output by Microwave Ovens and television transmissions (infantmonitors, surveillance cameras, X-10 cameras, etc.). IE_PD_CFG fieldProfile field name value Notes bwMinkHz 300 Pulse BW from 300 kHz to 20MHz, bwMaxkHz 20000 with 8 MHz hold bwHoldkHz 8000 bwThreshDbm 24 Pulsedefined 24 dBm above noise floor. cfreqMinkHz 6000 6 MHz to 94 MHzcenter frequency, cfreqMaxkHz 94000 with 8 MHz hold. cfreqHoldkHz 8000durMinUsecs 2800 Pulse durations from 2800 to 8000 μs durMaxUsecs 8000durMaxTermFlag 0 Do not discard long pulses pwrMinDbm −70 Pulse powerfrom −70 to 0 dBm, with pwrMaxDbm 0 20 dB hold. pwrHoldDbm 20

[0378] Before running a pulse histogram test for the first time, thepulse detectors need to be configured. This is done by first running apulse event test, described above. A session control message is sentcontaining a header field with a sessType value of ‘13’. That isfollowed by the optional information elements, as shown in the tablebelow detailing the optional pulse histogram test configuration element(IE_PHIST_CFG). If it is not sent, the default values (shown in thetable) are used. Sub-Field Name Description infoElementType IE_PHIST_CFG= 9 forwardTimeoutMs Number of milliseconds between each Pulse Histogrammessage update. The default is 1000 (which yields 1 Pulse Histogrammessage each second). pdUsed These bit flags select which PulseDetector(s) to use: 0x01: PD 0 used 0x02: PD 1 used 0x04: PD 2 used0x08: PD 3 used Flags can be combined to indicate more than one pulsedetector. For example, 0x0D (binary 0000 1101) indicates the use ofpulse detectors 0, 2, and 3. A value of 0xF (binary 0000 1111) indicatesto use all detectors (default value).

[0379] The spectrum analyzer power vs. frequency test is started bysending a session control message containing a header field with asessType value of ‘10’; that is followed by the optional informationelements, as shown below. Sub-Field Name Description infoElementTypeIE_SAPF_CFG = 6 usecsBetweenSamples This value indicates the number ofμseconds between spectrum analyzer power vs. frequency samples. Thedefault value of 100,000 translates to 10 samples per second.transitionalPdUsed Indicates of which PD to use for Transitional Mode.0x00: PD 0 used 0x01: PD 1 used 0x02: PD 2 used 0x03: PD 3 used 0xFF:Transitional mode NOT USED (default value) If ‘transitionalPdUsed’ isnot equal to 0xFF, then the SAPF sample collection is turned on and offvia the specified Pulse Detector. When the Pulse Detector is ON (a pulseis in progress), SAPF samples are collected. When the Pulse Detectortransits to OFF, the samples are stopped. The time between samples sentto the user is still determined by ‘usecsBetweenSamples’.

[0380] The spectrum analyzer statistics test is started by send asession control message containing a header field with a sessType valueof ‘11’. That is followed by the optional information elements, asdescribed below. Sub-Field Name Description infoElementTypeIE_SA_STATS_CFG = 8 usecsBetweenSamples Indicates the number of μsecondsbetween spectrum analyzer stats updates. A default value of 100,000translates to 10 samples per second. pwrThreshDbm dBm power thresholdvalue used by “duty cycle” and “peak count” stats info. The defaultvalue is 24 dBm. (The “duty cycle” statistics indicate how often thesignal power is above the threshold value. The “peak count” statisticswill only count peaks at or above the threshold.)

[0381] The field pwrThreshDbm takes a signed dBm value that helpsdetermine the minimum power level for the “duty cycle” and the “peakcount.” The pwrThreshDbm parameter determines the “floor”, or minimumenergy level for these measurements, based on whether pwrThreshDbm ispositive or negative:

[0382] If pwrThreshDbm is negative (e.g.,: −65 dBm), then the floor isthe same as the value of pwrThreshDbm.

[0383] If pwrThreshDbm is positive (e.g.,: 24 dBm), then the floor isdetermined dynamically based on the current noise floor: power floordBm=noise floor dBm+pwrThreshDbm. A noise floor based mechanism(pwrThreshDbm is positive) is used almost exclusively because itresponds well to changes in the radio spectrum environment.

[0384] The spectrum event data test is started by sending a messagecontaining a header field with a sessType value of ‘14’.

[0385] The snapshot message test is started by sending a messagecontaining a header field with a sessType value of ‘17’, followed by theoptional configuration elements. The optional snapshot messageconfiguration element (IE_SNAP_CFG) follows. If it is not sent, defaultvalues are used for the test. Sub-Field Name Description infoElementLenLen = 12 infoElementType IE_SNAP_CFG = 12 numberSamples Number ofsamples to capture snapPdUsed Snapshot Pulse Detector used to triggerthe snapshot. 0x00: PD 0 used 0x01: PD 1 used 0x02: PD 2 used 0x03: PD 3used 0xFF: Snapshot Use DISABLED

[0386] By specifying which pulse detector is used to trigger thesnapshot capture, it is possible to control which types of signal pulsesare detected to trigger a raw ADC data capture.

[0387] The NSI may reply to test start messages to inform the requestingsoftware application of the status of the test, and the ability of theunderlying applications to deliver data for the requested tests. It isalso possible to stop a test that has been requested. The table belowsummarizes the session control status messages which may be sent via theNSI.

[0388] FIGS. 24-27 illustrate exemplary screens to display spectrumactivity information. An exemplary graphs panel consists of the graphsor plots on the right of the screen and plot type on the left tree view.When the tree view is opened and any plot type is clicked, thecorresponding plot will be added and displayed on the right side. Anyplot on the right side of the screen can be removed by clicking on theclose icon on the plot. As soon as the “Start” button is hit and data isavailable on the socket the spectrum analyzer plots will be plotted. Ifthe “Stop” button is pressed the plotting action is disabled and thespectrum analyzer plots will no longer be updated with incoming data.The spectrum activity information is displayed on the spectrum analyzergraphs, pulse histograms and pulse plots.

[0389] The spectrum analyzer graph in FIG. 24 contains spectrum analyzerpower vs. frequency information, described above. The spectrum analyzerstats are shown in FIG. 25 and include the spectrum analyzer statsgraph, the duty cycle graph, and number of peaks bar chart. This SAstats graph displays statistical data on the frequency spectrum. It isbased on spectrum messages, where a single message is built from aspecific number of successive FFT cycles. Typically, 40,000 successiveFFTs of the RF spectrum, taken over a total time of {fraction (1/10)} ofa second, are used to construct the statistics for a single message. Afirst line shows the average power over the sampling period (i.e., overthe 40,000 FFTs, or {fraction (1/10)} second). A second line, which canchange rapidly from {fraction (1/10)} of a second to the next,represents the “maximum power per single sampling period.” It shows themaximum power achieved in each of 256 frequency bins, during the{fraction (1/10)} second sampling period. A third line represents the“absolute maximum power” over all messages received so far. The DutyCycle graph shows the percentage of the time that, for a givenfrequency, the power in the RF spectrum is above a specified threshold.

[0390] The Number of Peaks chart shows the percentage of time that thereare “N” peaks in the RF spectrum. For example, if the “0” bar ishovering around 50%, then 50% of the time there are no peaks at all. Ifthe “1” bar is hovering at around 20%, then 20% of the time there isjust 1 peak in the RF spectrum. If the “2” bar hovers at 5%, then 5% ofthe time SAGE is detecting 2 peaks in the RF spectrum. (The “9” bar is aspecial case: If the “9” bar is hovering at, say, 3%, then 3% of thetime SAGE is seeing 9 or more peaks in the RF spectrum.

[0391]FIG. 26 shows exemplary pulse histogram plots for centerfrequency, bandwidth, pulse duration, pulse gap, pulse power and pulsecount. As soon as the “Start” button and histogram data is available onthe socket the histograms will be plotted. If the “Stop” button ispressed the plotting action is disabled and the histograms will nolonger be updated with incoming data. The following types of plots areavailable for viewing:

[0392] Center Frequency shows the distribution of the centralfrequencies of the pulses. The graph spans a bandwidth of 100 MHz. Theactual central frequency is determined by combining the centralfrequency shown on the graph with the overall RF center frequency (2.4GHz). Also, both ends of the graph are typically flat, since the actualbandwidth captured by the radio is 83 MHz.

[0393] Bandwidth shows the distribution of the bandwidths of the pulses.

[0394] Pulse Duration shows the distribution of the duration of thepulses. For example, a peak at around 200 μsec indicates that many ofthe pulses persist for about 200 μsec.

[0395] Pulse Gap shows the distribution of the gap times. A peak atabout 1500 μsec indicates that many of the pulses are separated in timeby gaps that are about 1500 μsec long.

[0396] Pulse Power indicates the distribution of the power of thepulses.

[0397] Pulse Count indicates, on a logarithmic scale, the number ofpulse events counted per sample interval. Colors may be used indicatethat the number of pulses poses little risk, some risk, or significantrisk, for example, to a particular type of communications occurring inthe radio frequency band, such as 802.11 communications.

[0398]FIG. 27 shows a pulse chart/plot for various pulses detected inthe frequency band. When the “Capture” button is selected, the GUIapplication will capture the pulses and display them on the pulse chart.Each pulse is defined in three dimensions and presents a single dot foreach pulse. It is intended to show the time at which each pulse occurred(horizontal axis), the center frequency (vertical axis), and the power(the dot color). A color-coded legend may be used on the left side ofthe pulse chart. A zooming action can be performed by dragging the mouseon a specified area in the plot below the area to be zoomed, in order tomagnify that area.

[0399] An example of how the NSI can be used to configure and obtaindata from a SAGE pulse detector is shown in FIG. 28. In the diagram,solid lines are for the unified message and the dotted lines indicatethe headers, information elements and information messages sent thatmake up a single message. Step 6000 represents a software applicationsending to the NSI a start message. The message includes a messageheader with a particular msgType value that indicates it is a startmessage and a sessType value to indicate that it is a pulse event test.If it is the first message request sent, the start message includeseither the IE_Radio_CFG element, or the IE_VENDOR_CFG element. TwoIE_PD_CFG elements are sent to configure pulse detector 0 to detectshort pulses and pulse detector 1 to detector long pulses. A pulse eventinformation element IE_PEVT_CFG is also sent to indicate which of theconfigured pulse detectors to use. The applicable data from the SAGE isgenerated and made available to the NSI. In step 6010, the NSI replieswith a message confirming that the service was started and the status ofthe service in process. In step 6020, a series of informational messagesare sent with data. Each message includes indicates that it is aninformational message and includes one or more of the ClassPevt fieldswhich hold the actual data that described the measured properties ofpulses that are detected within the configured parameters. Furtherinformation messages are sent as shown at step 6030.

[0400] In sum, a method is provided for generating informationpertaining to activity occurring in a radio frequency band, comprisingsteps of receiving energy in the radio frequency band in which activityassociated with a plurality of signal types may occur; and generatingspectrum activity information for activity in the radio frequency bandfrom the received radio frequency energy.

[0401] In addition, a device is provided for generating informationpertaining to activity occurring in a radio frequency band, comprising aspectrum analyzer that computes power values for radio frequency energyreceived in at least part of the radio frequency band for a timeinterval; and a signal detector coupled to the spectrum analyzer thatdetects signal pulses of radio frequency energy that meet one or morecharacteristics.

[0402] Furthermore, a processor readable medium is provided that isencoded with instructions that, executed by a processor, cause theprocessor to perform steps of computing power spectral information forradio frequency energy received during a time interval in at least partof a radio frequency band in which activity associated with a pluralityof signal types may occur; and detecting from the power spectralinformation signal pulses of radio frequency energy that have meet oneor more characteristics.

[0403] Further still, a system is provided that monitors activity in aradio frequency band where signals of multiple types may be occurring,comprising a process for analyzing radio frequency energy occurring inthe radio frequency band and accumulating data associated with activityin the radio frequency band, wherein the process is responsive to arequest containing parameters associated with spectrum analysis to beperformed by the process.

[0404] Further, a system is provided that monitors activity in a radiofrequency band where signals of multiple types may be occurring,comprising a process that generates spectrum activity information foractivity in the radio frequency band based on received radio frequencyenergy from the radio frequency band; an application program thatprocesses spectrum activity information pertaining to activity in theradio frequency band; and an application programming interface thatpresents messages the process and returns spectrum activity informationto the application program.

[0405] The above description is intended by way of example only and isnot intended to limit the present invention in any way.

What is claimed is:
 1. A method for generating information pertaining toactivity occurring in a radio frequency band, comprising steps of: a.receiving energy in the radio frequency band in which activityassociated with a plurality of signal types may occur; and b. generatingspectrum activity information for activity in the radio frequency bandfrom the received radio frequency energy.
 2. The method of claim 1,wherein the step of generating spectrum activity information comprisesgenerating power spectral information from the radio frequency energyreceived in the radio frequency band.
 3. The method of claim 2, andfurther comprising the step of detecting signal pulses that satisfy oneor more characteristics from the power spectral information.
 4. Themethod of claim 3, wherein the step of generating comprises generatingsignal pulse data including one or more of: pulse duration, pulse centerfrequency, pulse bandwidth, for signal pulses detected in the frequencyband.
 5. The method of claim 3, and further comprising the step ofdetecting one or more peaks in spectral information obtained fromsignals received in the frequency band, and wherein the step ofdetecting signal pulses comprises detecting signal pulses that meet theone or more characteristics from the detected one or more peaks.
 6. Themethod of claim 5, wherein the step of detecting a peak comprisesdetecting power values above a threshold at a contiguous set offrequency bins.
 7. The method of claim 5, wherein the step of detectinga peak comprises detecting power values that exceed the threshold atcontiguous Fast Fourier Transform (FFT) frequency bins.
 8. The method ofclaim 6, and further comprising the step of outputting for each detectedpeak, data including the maximum power value for each peak and frequencybins spanned by the peak.
 9. The method of claim 5, wherein the step ofdetecting signal pulses comprises computing, for each detected peak,signal pulse data comprising one or more of: pulse bandwidth, centerfrequency and duration.
 10. The method of claim 9, and furthercomprising the step of displaying information associated with signalpulses detected in the frequency band.
 11. The method of claim 9,wherein the step of detecting signal pulses further comprisesdetermining whether the signal pulse data are within one or more rangesfor one or more of pulse bandwidth, center frequency and duration. 12.The method of claim 11, and further comprising the step of accumulatingsignal pulse data for signal pulses determined to fall within the one ormore ranges, wherein the accumulated pulse data comprises for eachdetected signal pulse one or more data selected from the groupconsisting of: pulse bandwidth, pulse center frequency, pulse duration,and pulse start time.
 13. The method of claim 11, and further comprisingconfiguring the one or more ranges for signals to be detected in thefrequency band.
 14. The method of claim 12, wherein the step ofaccumulating comprises accumulating histograms for the one or moresignal pulse data.
 15. The method of claim 14, wherein the step ofaccumulating comprises accumulating one or more histograms are selectedfrom the group consisting of: a center frequency histogram that tracks apercentage of time a given center frequency was observed for detectedsignal pulses, a bandwidth histogram that tracks the percentage of timea given bandwidth was observed for detected signal pulses, a pulseduration histogram that tracks a percentage of time a given duration ordurations was observed for detected signal pulses, a time between pulseshistogram that tracks percentage of time that a given time duration ordurations was observed between signal pulses and a number of activetransmissions histogram that tracks when several different signal pulsessimultaneously occur.
 16. The method of claim 15, and further comprisingthe step of displaying information associated with the one or morehistograms.
 17. The method of claim 5, and further comprising the stepof storing digital signals representing samples of a received signalwhen a signal pulse of a particular type is detected.
 18. The method ofclaim 1, wherein the step of receiving comprises receiving radiofrequency energy across substantially the entire radio frequency bandfor a time interval.
 19. The method of claim 1, wherein the step ofreceiving comprises receiving radio frequency energy in a portion of thefrequency band for a time interval.
 20. The method of claim 19, whereinthe step of receiving comprises receiving radio frequency energy indifferent portions of the radio frequency band over different timeintervals.
 21. The method of claim 2, wherein the step of generatingpower spectral information comprises generating power values at aplurality of frequency bins from a digital signal representing radiofrequency energy received in the radio frequency band during a timeinterval.
 22. The method of claim 21, and further comprising the step ofcomputing the power at each frequency bin for a time interval.
 23. Themethod of claim 22, and further comprising the step of adding the powerat each frequency bin for a current time interval with the power at thecorresponding frequency bin for a previous time interval to obtain anaverage power at each frequency bin.
 24. The method of claim 23, andfurther comprising the step of comparing the power at each frequency binwith a power threshold to obtain a duty count of the number of timesthat the power at each frequency bin exceeds the power threshold overtime intervals.
 25. The method of claim 24, and further comprising thestep of comparing the power at each frequency bin for a current timeinterval with the power at the corresponding frequency bin for aprevious time interval to track the maximum power in each frequency binover time intervals.
 26. The method of claim 25, and further comprisingstoring in a memory one or more of: the average power at each frequencybin, the duty count for each frequency bin and the maximum power foreach frequency bin over time intervals.
 27. The method of claim 25, andfurther comprising the step of comparing the power at each frequency binwith a peak threshold over multiple update cycles each of whichcomprises a plurality time intervals, thereby tracking the number ofupdate cycles during which a certain number of peaks are detected. 28.The method of claim 27, and further comprising the step of storing thenumber of update cycles during which the certain number of peaks aredetected.
 29. The method of claim 27, and further comprising displayingthe duty count and number of peaks detected.
 30. The method of claim 2,and further comprising steps of: a. detecting from the power spectralinformation a signal pulse associated with a periodic signal occurringin the frequency band; b. comparing the occurrence of the signal pulsewith a local clock signal; c. determining a phase error between theoccurrence of the signal pulse and a state of the local clock signal;and d. delaying or advancing the local clock signal by an amountcorresponding to the phase error.
 31. The method of claim 30, andfurther comprising the step of continuing to monitor the phase errorbetween the occurrence of the signal pulse and the local clock signaland adjusting a frequency of the local clock signal based on the phaseerror.
 32. The method of claim 31, and further comprising the step ofupdating the frequency offset over time using a loop filtering process.33. The method of claim 32, and further comprising the step of updatingthe frequency offset over time using a second order loop filteringprocess.
 34. The method of claim 2, and further comprising the step ofverifying the authenticity of a device operating in the radio frequencyband based on the power spectral information obtained when the deviceemits a signal in the radio frequency band.
 35. The method of claim 34,wherein the step of verifying comprises comparing signal pulsecharacteristics obtained when the device emits a signal with storedsignal pulse characteristics that are associated with devices authorizedto operate in the radio frequency band.
 36. The method of claim 35,wherein the step of verifying comprises comparing signal pulsecharacteristics associated with the emitted signal with signal pulsecharacteristics associated with an identifier that matches an identifiercontained in the emitted signal and determining that the device is notauthorized when the captured signal pulse characteristics do not matchthe stored signal pulse characteristics for that identifier.
 37. Themethod of claim 1, and further comprising steps of receiving a requestfor spectrum activity information from an application program interface;and supplying the spectrum activity information in accordance with therequest.
 38. The method of claim 37, wherein the step of receiving therequest comprises receiving parameters for specifying spectrum activityinformation to be generated including at least one of: characteristicsof signal pulse types to be detected in the radio frequency band, andportion of the radio frequency band for which spectral power informationis to be generated.
 39. The method of claim 37, wherein the step ofsupplying comprises supplying at least one of: (a) statistics associatedwith a particular portion of the radio frequency band including one ormore of average power level, maximum power level of activity for each ofa plurality of frequency bins in the particular portion of the radiofrequency band, and a measure of activity in those frequency bins havingactivity; (b) signal pulses determined to occur in the frequency bandwhose center frequency, duration and/or bandwidth fall within ranges;(c) histograms for one or more of center frequency, duration andbandwidth of signal pulses determined to occur in the radio frequencyband over time; and (d) digital samples of received radio frequencyenergy when a particular signal pulse type is determined to occur in thefrequency band.
 40. A device for generating information pertaining toactivity occurring in a radio frequency band, comprising: a. a spectrumanalyzer that computes power values for radio frequency energy receivedin at least part of the radio frequency band for a time interval; and b.a signal detector coupled to the spectrum analyzer that detects signalpulses of radio frequency energy that meet one or more characteristics.41. The device of claim 40, wherein the signal detector comprises: a. apeak detector circuit that detects one or more peaks from the powervalues for a time interval, wherein a peak corresponds to power valuesabove a threshold at a predetermined number of contiguous frequencies;and b. at least one pulse detector circuit coupled to the peak detectorcircuit that detects signal pulses that meet one or more characteristicsbased on one or more peaks detected the peak detector.
 42. The device ofclaim 41, wherein the peak detector circuit comprises a comparator thatcompares power values at each frequency with a peak threshold toidentify which frequencies exceed the peak threshold.
 43. The device ofclaim 42, wherein the peak detector circuit identifies the maximum powervalue among a set of contiguous frequencies that exceed the peakthreshold.
 44. The device of claim 43, wherein the pulse detectorcircuit receives as input information from the peak detector circuitthat identifies which frequencies exceed the peak threshold and maximumpower value for a set of contiguous frequencies that exceed the peakthreshold, and determines whether that information satisfies the one ormore characteristics.
 45. The device of claim 44, wherein the pulsedetector circuit detects a signal pulse from the output of the peakdetector circuit if one or more of: center frequency, duration andbandwidth of the information describing detected peaks from the peakdetector circuit are within a corresponding range.
 46. The device ofclaim 45, wherein the pulse detector circuit is configurable to adjustthe range for one or more of the center frequency, duration andbandwidth in order declare a signal pulse from the information generatedby the peak detector circuit.
 47. The device of claim 45, wherein thepulse detector circuit outputs pulse event data for each detected signalpulse including one or more of: center frequency, bandwidth, start timeand duration.
 48. The device of claim 47, and further comprising aprocessor coupled to receive pulse event data output by the pulsedetector circuit and to accumulate pulse event data for pulses detectedby the pulse detector circuit over time.
 49. The device of claim 48,wherein the processor accumulates pulse event data and builds one ormore histograms for pulse event data accumulated over time, wherein theone or more histograms are selected from the group consisting of: acenter frequency histogram that tracks a percentage of time a givencenter frequency was observed for detected signal pulses, a bandwidthhistogram that tracks the percentage of time a given bandwidth wasobserved for detected signal pulses, a pulse duration histogram thattracks a percentage of time a given duration or durations was observedfor detected signal pulses, a time between pulses histogram that trackspercentage of time that a given time duration or durations was observedbetween signal pulses and a number of active transmissions histogramthat tracks when several different signal pulses simultaneously occur.50. The device of claim 41, and comprising a plurality of pulse detectorcircuits each coupled to receive the output of the peak detectorcircuit, wherein each pulse detector circuit detects signal pulses thatsatisfy configurable characteristics based on the output of the peakdetector circuit.
 51. The device of claim 41, wherein the pulse detectorcircuit outputs a trigger signal in response to detecting a signal pulsethat meets the configurable characteristics.
 52. The device of claim 51,and further comprising a memory responsive to the trigger signal thatstores digital signals representing samples of radio frequency energyreceived in the radio frequency band.
 53. The device of claim 51,wherein the memory further stores a timestamp signal identifying a timeassociated with an occurrence of the trigger signal.
 54. The device ofclaim 51, wherein the memory is a first-in-first-out buffer.
 55. Thedevice of claim 40, wherein the spectrum analyzer receives as input adigital signal representing activity in at least a portion of thefrequency band and comprises a power calculation circuit that computespower values for a plurality of frequency bins for a time interval thatare supplied as input to the peak detector.
 56. The device of claim 55,wherein the spectrum analyzer computes from the power values for theplurality of frequencies, one or more data selected from the groupconsisting of: average power at each frequency bin over time intervals;a duty count comprising a running sum at each time interval of thenumber of times the power at each frequency bin exceeds the powerthreshold; a maximum power for each frequency bin for a current andprior time intervals; and a running count of the number of timeintervals in which a certain number of peaks have been detected.
 57. Thedevice of claim 56, and further comprising a memory for storing the oneor more data.
 58. The device of claim 57, and further comprising amemory controller coupled to the memory, wherein a pulse detectorcircuit outputs a trigger signal in response to detecting a certain typeof pulse that is coupled to the memory controller to write to the memorythe output of the power calculation circuit for one or more timeintervals.
 59. The device of claim 40, and further comprising a radioreceiver capable of receiving radio frequency energy in the radiofrequency band in which activity associated with a plurality of signaltypes may occur.
 60. The device of claim 59, wherein the radio receiverdownconverts signals in substantially the entire frequency band for atime interval.
 61. The device of claim 59, wherein the radio receiverdownconverts signals in a portion of the frequency band, and is tunableto different portions of the frequency band.
 62. The device of claim 59,wherein the spectrum analyzer, signal detector and radio receiver resideon a card device having an interface.
 63. In combination, the device ofclaim 62, and a host device coupled to the card device via theinterface, wherein the host device comprises a host processor and memorythat stores programs that are used to process the output of the spectrumanalyzer and signal detector.
 64. The device of claim 40, and furthercomprising a processor coupled to the spectrum analyzer and the signaldetector, wherein the processor receives from an application programinterface a request for spectrum activity information, and supplies thespectrum activity information to the application program interface. 65.The device of claim 64, wherein the processor generates on the basis ofthe request at least one configuration parameter for the spectrumanalyzer or signal detector including at least one of: characteristicsof signal pulse types to be detected in the radio frequency band, andportion of the radio frequency band for which spectral power informationis to be generated.
 66. The device of claim 64, wherein the processorgenerates the spectrum activity information based on the request includeat least one of: (a) statistics associated with a particular portion ofthe radio frequency band including one or more of average power level,maximum power level of activity for each of a plurality of frequencybins in the particular portion of the radio frequency band, and ameasure of activity in those frequency bins having activity; (b) signalpulses determined to occur in the frequency band whose center frequency,duration and/or bandwidth fall within ranges; (c) histograms for one ormore of center frequency, duration and bandwidth of signal pulsesdetermined to occur in the radio frequency band over time; and (d)digital samples of received radio frequency energy when a particularsignal pulse type is determined to occur in the frequency band.
 67. Thedevice of claim 40, wherein the signal detector comprises a pulsedetector that detects a signal pulse associated with a periodic signalin the frequency band, and further comprising: a. a clock modulecomprising: i. at least N registers, each of which stores a programmableduration value associated with one of two states of a pulse of thecommunication signal, where N is equal to 2 times the number of pulsesin a cycle of the communication signal; ii. a down counter driven by aclock signal that counts down with each clock pulse from a valuecorresponding to the content of one of the N registers; iii. a mod(N)counter coupled to the down counter that counts up to N−1 by one inresponse to the down counter reaching zero and when reaching N−1,causing content of the next of the N registers to be loaded into thedown counter; b. a processor coupled to the clock module and to thepulse detector, wherein the processor examines the count values of thedown counter and the mod(N) counter to measure a phase error between theclock signal used to drive the down counter and the signal pulse of theperiodic signal.
 68. The device of claim 67, wherein the processor loadsthe N registers with values based on an expected frequency of one ormore signal pulses of the periodic signal.
 69. The device of claim 67,wherein the processor generates a phase offset value according to thephase error it measures that is used to load a value into the downcounter and the mod(N) counter when those counters count to zero inorder to compensate for the phase error.
 70. The device of claim 67,wherein the processor continues to monitor the count values of the downcounter and the mod(N) counter to measure the phase error and generatesa frequency offset value used for advancing or delaying counting of thedown counter.
 71. The device of claim 67, wherein the processor updatesthe frequency offset over time using a loop filtering process.
 72. Aprocessor readable medium encoded with instructions that, when executedby a processor, cause the processor to perform steps of: a. computingpower spectral information for radio frequency energy received during atime interval in at least part of a radio frequency band in whichactivity associated with a plurality of signal types may occur; and b.detecting from the power spectral information signal pulses of radiofrequency energy that have meet one or more characteristics.
 73. Asystem that monitors activity in a radio frequency band where signals ofmultiple types may be occurring, comprising a process for analyzingradio frequency energy occurring in the radio frequency band andaccumulating data associated with activity in the radio frequency band,wherein the process is responsive to a request containing parametersassociated with spectrum analysis to be performed by the process.
 74. Asystem that monitors activity in a radio frequency band where signals ofmultiple types may be occurring, comprising: a. a process that generatesspectrum activity information for activity in the radio frequency bandbased on received radio frequency energy from the radio frequency band;b. an application program that processes spectrum activity informationpertaining to activity in the radio frequency band; and c. anapplication programming interface that presents messages the process andreturns spectrum activity information to the application program.